R中的计算列
问题描述:
下面两条语句有什么区别?它们呈现出不同的结果,并且由于我试图从SPSS来到R,所以我有点困惑。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。
任何帮助将不胜感激。
答
用单括号表示一个数据框中的一列(第一个例子)只产生一个只有该列的数据框,但使用$运算符(如第二个例子中所示)只是一个向量。如果印刷品有名称(第一个例子中的col1),则印刷品将打印与其相关的名称。你用ds [132]得到的数据框有一个名称属性,但你用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
有些数据块呢? – aL3xa 2010-06-24 12:25:13