2010-06-24 97 views
1

下面两条语句有什么区别?它们呈现出不同的结果,并且由于我试图从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。

任何帮助将不胜感激。

+0

有些数据块呢? – aL3xa 2010-06-24 12:25:13

回答

8

用单括号表示一个数据框中的一列(第一个例子)只产生一个只有该列的数据框,但使用$运算符(如第二个例子中所示)只是一个向量。如果印刷品有名称(第一个例子中的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