答案 0 :(得分:2)
原因是'x'和'y'列可能是factor
类。我们可以将其更改为numeric
,它应该可以正常工作
mean(as.numeric(as.character(test2$x)), na.rm=TRUE)
#[1] 300
当数据集中已存在非数字元素时,我们会使用read.csv/read.table
来使用默认选项stringsAsFactors=TRUE
读取数据集。因此,任何具有非数字的列都是factor
。即使我们使用stringsAsFactors=FALSE
,该列将为character
,并且直接在mean
类上使用character
会得到与结果相同的NA
mean(as.character(test2$y), na.rm=TRUE)
#[1] NA
#Warning message:
#In mean.default(as.character(test2$y), na.rm = TRUE) :
# argument is not numeric or logical: returning NA
我们可以查看str(test2)
并找到class
或使用class(test2$x)
test <- data.frame(x= c(124, "*", 546, 54), y = c("*",
2, 34, 4), z =c(324, 354, 12, 54), b = c(133, 54, 11, 545))
test[test=="*"] <- NA
test2 <- na.omit(test)