R的基本功能中的表观异常

时间:2016-05-22 02:23:09

标签: 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
> 
> 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                 

1 个答案:

答案 0 :(得分:5)

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

> 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.

所以我假设您没有使用最新的R内核,因此要求您包含sessionInfo()或其他内容。现在,你在R 3.2.2。因此,我们需要继续使用R CRAN来查看已更改的内容,不仅在3.3.0中,而且在3.2.2以后的所有版本中。在R CRAN页面:https://cran.r-project.org/中,有一个新的链接:

what's new

抱歉,我放了一张照片,因为该链接没有特殊的网址。

以下行在R 3.2.3中的BUG FIXES下:

  

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

change log

让我们放大:

zoom in