我的“var”效果不好

时间:2014-02-10 03:15:11

标签: r

所有。我最麻烦的是最基本的一个。这是问题所在;

> 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,但它没有解决问题。 你能给我你的建议吗?请

谢谢。 京介

3 个答案:

答案 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