惊鸿
输入的文件数据是多行多列的数据,我想从中取出某一列,用
read.table("file.dat") 导入文件;然后想取第二列用data$V2,怎么结果为NULL?
rtist
先用head看一眼
再检查class是不是data.frame
再看看(col)names是什么
下次自己写清标题。
惊鸿
都正常;
t<-read.table("e:/test.dat")
head(t)
V1 V2
1 122.44 0
2 1233.40 0
3 2222.50 0
4 2222.60 0
5 444.60 0
> class(t)
[1] "data.frame"
colnames(t)
[1] "V1" "V2"
rtist
再重新看看现在好不好用了
惊鸿
还是不行 ,还有个问题是,导入文件是警告说“遇到不完整的最后一行”
rtist
summary(t)
tail(t)
文件最后一行末尾加回车看看
惊鸿
t<-read.table("e:/test.txt")
summary(t)
V1 V2
Min. : 122.4 Min. :0
1st Qu.: 444.6 1st Qu.:0
Median :1233.4 Median :0
Mean :1249.1 Mean :0
3rd Qu.:2222.5 3rd Qu.:0
Max. :2222.6 Max. :0
tail(t)
V1 V2
1 122.44 0
2 1233.40 0
3 2222.50 0
4 2222.60 0
5 444.60 0
> data$V1
NULL
> data$V2
NULL
rtist
t$V2
惊鸿
好的,谢谢了,论坛中的 “R快速入门[转帖]”,用的data$V1 ,改正以下
rtist
FAINT.........................
I HAVE NOTHING TO SAY IF THIS IS THE PROBLEM.
TTG
你的变量明明是t,你找data要结果怎么可能呢?
yihui
弱弱的问一句,这里怎么变成Joke版了……
rtist
呵呵,居然荣幸地成为管理员blog的tag了
其实楼主体的也的确是个问题——好像有不少tutorial都爱把data作为一个保存数据的变量的名称,这样做虽然不是不可以,但是里面隐藏着问题——data已经是util包里面的一个默认函数的名称了,所以即使data没有在global environment里面定义过,R也能找到这个名称的对象,所以提取data函数的V2 component,自然是NULL了。如果tutorial用点别的名字,系统就会报错Error: object "xxxx" not found了。
yihui
我也是发现一些人写程序从来不管变量名是否已经是R中的常量或者函数名,比如用c、data、t等做变量名,不过这个需要一点点的知识积累
另:我的tag中rtist应该用首字母大写还是全小写?
colinisstudent
用拼音一般没有问题
bayueshibahaodeshuju<-read.table("e:/test.txt")
znl_
bayueshibahaodeshuju<-read.table("e:/test.txt") : 饿的天, 十天过后你打开这空间, 还能知道这变量是什么吗? 函数还是源数据框 还是string?
王化儒
有意义的大小写字母和数字组合起来,起个容易理解的名字
yihui
本帖即将转向匈牙利命名法讨论……