以下代码中的错误是什么?

时间:2015-08-27 17:31:56

标签: r

我试图将1992年之前发布的电影与包含大数据集的发行年份的第3列分开。命令中的错误是什么?

> Movies0<-Movies[Movies[,3]<1992,]
Warning message:
In Ops.factor(Movies[, 3], 1992) : < not meaningful for factors
> 

1 个答案:

答案 0 :(得分:2)

您的Movies对象的第3列可能是factor变量,但它可能显示numeric / integer,并且警告表明,<运算符未定义factor

例如,

Df <- data.frame(
  NumericColumn = 1:10,
  FactorColumn = as.factor(1:10)
)
##
R> Df[Df[,2] < 5,]
#NumericColumn FactorColumn
#NA              NA         <NA>
#NA.1            NA         <NA>
#NA.2            NA         <NA>
# ...
#Warning message:
#In Ops.factor(Df[, 2], 5) : ‘<’ not meaningful for factors
##
R> Df[Df[,1] < 5,] # okay
##
R> Df[as.numeric(as.character(Df[,2])) < 5,] # okay

查看源代码,

R> Ops.factor
#function (e1, e2) 
#{
#  ok <- switch(.Generic, `==` = , `!=` = TRUE, FALSE)
#  if (!ok) {
#    warning(gettextf("%s not meaningful for factors", sQuote(.Generic)))
#    return(rep.int(NA, max(length(e1), if (!missing(e2)) length(e2))))
#  }
# ...

您可以看到哪些运算符可以与factor一起使用,而<不是其中之一。