2010-06-24 91 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