下面两个陈述之间有什么区别.他们正在呈现不同的结果,因为我试图从SPSS来到R,我有点困惑.
ds$share.all <- ds[132]/ ds[3]
mean(ds$share.all, na.rm=T)
Run Code Online (Sandbox Code Playgroud)
和
ds$share.all2 <- ds$col1/ ds$Ncol2
mean(ds$share.all2, na.rm=T)
Run Code Online (Sandbox Code Playgroud)
它们呈现相同的平均值,但在第一个上,输出打印为
col1
0.02669424
Run Code Online (Sandbox Code Playgroud)
第二个只打印.02xxxxx.
任何帮助都感激不尽.
用单个括号表示数据框的列(您的第一个示例)会生成一个只包含该列的数据框,但使用$运算符(如第二个示例中所示)只是一个向量.如果有名称,则打印某些内容将打印与其关联的名称(第一个示例中为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
Run Code Online (Sandbox Code Playgroud)