R中colSums(x, na.rm = T)出错:无效的'na.rm'参数

3
我试图计算数据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)

1
在R中,T不是保留字。一个人可以(而且显然你已经)覆盖它的值。运行rm(T)将起作用。但最好的方法是坚持使用TRUEFALSE - Ricardo Saporta
2个回答

4

你会出现错误,因为T的值已被更改为一个无法解释为逻辑(True或False)的参数,可以是NA或字符。我认为使用TF是一种不好的习惯。为了避免错误:

colSums(x, na.rm=TRUE)

TRUE(或FALSE)是保留字,不能被覆盖。

仅供娱乐,你可以尝试:

T = FALSE
F = TRUE

colSums(x, na.rm=T)
colSums(x, na.rm=F)

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 => 它只是在启动时为方便起见定义的一个简写,仅此而已。


不需要明确地是 NA。只需要通过 as.logical 转换为 NA 的东西。例如,T <- 'blah' - Matthew Lundberg
我继续修复了它。 - Ben Bolker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接