【问题标题】:Why Error in colSums(x, na.rm = T) : invalid 'na.rm' argument in R为什么 colSums(x, na.rm = T) 出错:R 中的“na.rm”参数无效
【发布时间】:2014-04-12 23:59:27
【问题描述】:

我尝试为我的数据 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)

【问题讨论】:

  • T 不是 R 中的保留字。可以(显然你已经)覆盖它的值。运行rm(T) 将起作用。但最好的方法是坚持TRUEFALSE

标签: r na reserved-words na.rm


【解决方案1】:

我可以通过将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 &lt;- 'blah'
  • 我继续修复它。
【解决方案2】:

您收到错误,因为 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-18
    • 2019-01-01
    • 1970-01-01
    • 2016-04-15
    • 2013-03-27
    • 2018-01-03
    • 2020-12-19
    • 2019-10-04
    相关资源
    最近更新 更多