所有。我最麻烦的是最基本的一个。这是问题所在;
> mean(1:10)
[1] 5.5
>sd(1:10)
[1] 3.02765
> var(1:10)
[1] 0 0 0 0 0 0 0 0 0 0
> x<-data.frame(first=c(1,2),second=c(3,4))
> mean(x$first)
[1] 1.5
> sd(x$first)
[1] 0.7071068
> var(x$first)
[1] 0 0
> var(x)
first second
[1,] 0 0
[2,] 0 0
为什么R计算每个细胞的方差?这真的很不方便。我重新安装了R,但它没有解决问题。 你能给我你的建议吗?请
谢谢。 京介
答案 0 :(得分:1)
这样做:
ls(pattern='var')
rm(var)
它将消除您定义的无关(和不正确)函数,并且在自动加载的.Rdata图像中闲逛。 (这是一个隐藏文件,不会通过重新安装来消除它。)如果你定义一个与内置函数var
同名的函数,它将掩盖原始函数。
答案 1 :(得分:0)
如果要将函数应用于行或列
,请使用apply
> apply(x, 2, var)
first second
0.5 0.5
或者,如果sapply(x, var)
是data.frame
x
var(x$first)
对我有用
> var(x$first)
[1] 0.5
您还可以使用colVars
包
matrixStats
功能
> #install.packages("matrixStats")
> library(matrixStats)
> colVars(x)
first second
0.5 0.5
有关详细信息,请参阅?matrixStats
。
答案 2 :(得分:0)
你的结果看起来很奇怪。对于您的数据,var(x)和cov(x)应该给出:
first second
first 0.5 0.5
second 0.5 0.5