全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2098 10
2016-05-19
    本人是刚学R的菜鸟,有个问题哪位大神能给指教一下。
    《R编程入门经典》中有一个例题,说的是关于鸟类和栖息地之间的二维数据,用excel电子表格保存成csv格式,然后用read.csv读入R中,读入之后是这样的:
    > bird
              X       Garden   Hedgerow   Parkland   Pasture   Woodland
1     Blackbird        47           10             40            2            2
2     Chaffinch        19            3               5            0            2
3     Great Tit         50            0              10           7            0
4 House Sparrow    46          16               8            4            0
5         Robin           9            3               0            0            2
6   Song Thrush       4            0               6            0            0
   
    用class()命令来检查对象类型是这样的:
    > class(bird)
    [1] "data.frame"
    显示是数据框,而书上却说是这样的:
    > class(bird)
    [1] "matrix"
    显示为矩阵。
    第一个问题:我不明白这是为什么?有什么方法能使数据输入后直接是矩阵呢?

    然后,既然书上说是数据框,我就用as.matrix()命令把它转换成矩阵,转换后是这样的:
    as.matrix(bird)
             X                   Garden   Hedgerow   Parkland   Pasture   Woodland
    [1,] "Blackbird"          "47"         "10"           "40"          "2"          "2"     
    [2,] "Chaffinch"          "19"         " 3"            " 5"          "0"          "2"     
    [3,] "Great Tit"           "50"         " 0"           "10"          "7"          "0"     
    [4,] "House Sparrow"  "46"         "16"          " 8"           "4"          "0"        
    [5,] "Robin"               " 9"          " 3"           " 0"           "0"          "2"     
    [6,] "Song Thrush"     " 4"          " 0"           " 6"           "0"          "0"  

    转换后成了矩阵,可是数字全带上了引号,变成了字符。同样的例子,可该书上转换后并没有带引号,还是数字形式。
    第二个问题:这又是为什么?能不能转换后不带引号?
    本人R的菜鸟初学者,实在不明白为什么,有哪位路过的大神能不吝指教一下,感激不尽。
   
   
   
   


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-5-19 23:57:37
read.csv的帮助程序里说明:A data frame (data.frame) containing a representation of the data in the file.
这个函数就是返回data frame的。同时你没有设置stringsAsFactors变量为false,所以数值类型都变成了factor。

再用as.matrix的时候,如果有任何factor数据会自动把所有数据变为字符型。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-20 03:07:46
其实,data frame 和 matrix 实际上用法差不多,运算起来不会大相径庭
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-20 06:20:49
先查察看class(bird$Garden)
我的R沒看到這現象,自動成為numeric,包括整數。
不然就用data.matrix(frame, rownames.force = NA)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-20 14:28:59
robbieyeah 发表于 2016-5-19 23:57
read.csv的帮助程序里说明:A data frame (data.frame) containing a representation of the data in the f ...
非常感谢,我再试试。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-20 14:31:21
cmwei333 发表于 2016-5-20 03:07
其实,data frame 和 matrix 实际上用法差不多,运算起来不会大相径庭
非常感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群