以下两个陈述之间有什么区别。他们正在呈现不同的结果,因为我试图从SPSS来到R,我有点困惑。
ds$share.all <- ds[132]/ ds[3]
mean(ds$share.all, na.rm=T)
和
ds$share.all2 <- ds$col1/ ds$Ncol2
mean(ds$share.all2, na.rm=T)
它们呈现相同的均值,但在第一个上,输出打印为
col1
0.02669424
,第二个只打印.02xxxxx。
非常感谢任何帮助。
答案 0 :(得分:8)
用单括号表示数据框的列(您的第一个示例)会生成一个只包含该列的数据框,但使用$运算符(如第二个示例中所示)只是一个向量。如果有名称,则打印某些内容将打印与其关联的名称(第一个示例中为col1)。使用ds [132]获得的数据框具有name属性,但使用ds $ col1获得的向量却没有。 ds $ col1的等价物是使用double而不是单括号:ds [[132]]。例如:
> x<-data.frame(1:10)
> names(x)<-"var"
> class(x$var)
[1] "integer"
> class(x[1])
[1] "data.frame"
> identical(x[1],x$var)
[1] FALSE
> identical(x[[1]],x$var)
[1] TRUE