R的基本函数中的明显异常

R的基本函数中的明显异常,r,R,我有以下因素变量: > vect [1] C E D E E B C D B E D D C D E C A B B A D C E E C A C C B A B B A A D C C B D B A E B B D E C D C C B D D B D E C B A E C A [63] D C E A D C B E B A A C E A A C A B B A A C E D C E E B A B E C E B C E B D Levels: A B C D E

我有以下因素变量:

> vect
  [1] C E D E E B C D B E D D C D E C A B B A D C E E C A C C B A B B A A D C C B D B A E B B D E C D C C B D D B D E C B A E C A
 [63] D C E A D C B E B A A C E A A C A B B A A C E D C E E B A B E C E B C E B D
Levels: A B C D E
> 
> str(vect)
 Factor w/ 5 levels "A","B","C","D",..: 3 5 4 5 5 2 3 4 2 5 ...
> 
> dput(vect)
structure(c(3L, 5L, 4L, 5L, 5L, 2L, 3L, 4L, 2L, 5L, 4L, 4L, 3L, 
4L, 5L, 3L, 1L, 2L, 2L, 1L, 4L, 3L, 5L, 5L, 3L, 1L, 3L, 3L, 2L, 
1L, 2L, 2L, 1L, 1L, 4L, 3L, 3L, 2L, 4L, 2L, 1L, 5L, 2L, 2L, 4L, 
5L, 3L, 4L, 3L, 3L, 2L, 4L, 4L, 2L, 4L, 5L, 3L, 2L, 1L, 5L, 3L, 
1L, 4L, 3L, 5L, 1L, 4L, 3L, 2L, 5L, 2L, 1L, 1L, 3L, 5L, 1L, 1L, 
3L, 1L, 2L, 2L, 1L, 1L, 3L, 5L, 4L, 3L, 5L, 5L, 2L, 1L, 2L, 5L, 
3L, 5L, 2L, 3L, 5L, 2L, 4L), .Label = c("A", "B", "C", "D", "E"
), class = "factor")
当我试图计算它的平均值时,我得到了一个错误(适当地)。但是,如果我试图得到它的标准偏差,我可以得到:

> mean(vect)
[1] NA
Warning message:
In mean.default(vect) : argument is not numeric or logical: returning NA
> sd(vect)
[1] 1.388954
>
我认为mean()和sd()函数应该类似地处理因子变量。问题在哪里?谢谢你的评论

编辑:版本为:

> R.version

platform       i486-slackware-linux-gnu    
arch           i486                        
os             linux-gnu                   
system         i486, linux-gnu             
status                                     
major          3                           
minor          2.2                         
year           2015                        
month          08                          
day            14                          
svn rev        69053                       
language       R                           
version.string R version 3.2.2 (2015-08-14)
nickname       Fire Safety                 

在当前最新的R版本3.3.0上,我在
sd(vect)
上收到以下警告:

因此,我假设您没有使用最新的R内核,因此要求您包括
sessionInfo()
或其他内容。现在,您使用的是R3.2.2。因此,我们需要继续浏览R CRAN,看看发生了什么变化,不仅在3.3.0中,而且在3.2.2以来的所有版本中。在R CRAN页面:,有一个新内容链接:

对不起,我放了一张图片,因为这个链接没有特别的网址

以下行在R3.2.3中的错误修复中:

var()和sd()警告现在不推荐使用的因子参数。(PR#16564)

让我们放大:


@Zheyuan我的系统没有收到任何警告。@RichardScriven这就是重点。SD函数也应该进行这些检查(它的行为应该类似于平均值)。3.2.2:在问题中添加。在自己的函数中,我得到了“NA±1.28”的平均值±SD输出,这显然是奇怪的。新闻(版本=“3.3.0”&grepl(“var”,Text))以空行输出结束。
> sd(vect)
[1] 1.388954
Warning message:
In var(if (is.vector(x) || is.factor(x)) x else as.double(x), na.rm = na.rm) :
  Calling var(x) on a factor x is deprecated and will become an error.
  Use something like 'all(duplicated(x)[-1L])' to test for a constant vector.