我尝试计算数据x的每列总和。 但我总是遇到这个错误
"Error in colSums(x, na.rm = T) : invalid 'na.rm' argument"
为什么na.rm
参数在这种情况下不起作用?困惑......
x <- cbind(x1 = 3, x2 = c(4:1, 2:5))
x[3, ] <- NA; x[4, 2] <- NA
rowSums(x)
colSums(x, na.rm=T)
答案 0 :(得分:4)
您收到错误,因为T
的值已更改为无法解释为逻辑(TRUE或FALSE)的参数,可以是NA
或字符。在我看来,使用T
和F
是一个坏习惯。为避免错误:
colSums(x, na.rm=TRUE)
TRUE
(或FALSE
)不能被覆盖,作为保留字。
只是为了好玩,你可以尝试:
T = FALSE
F = TRUE
colSums(x, na.rm=T)
colSums(x, na.rm=F)
答案 1 :(得分:3)
我可以通过将T
的常规值覆盖为NA
来重新创建您的错误:
> T=NA
> colSums(all,na.rm=T)
Error in colSums(all, na.rm = T) : invalid 'na.rm' argument
所以最有可能的是,您(或一个有趣的同事?)已将代码中某处的变量T
定义为等于NA
。要撤消它,只需输入:
T=TRUE
或更好:
rm(T)
永远不要忘记R并不真正了解T
=&gt;它只是为了方便启动而定义的简写,仅此而已。