我想了解为什么在R中的sum/min/max函数中,当将字符输入到na.rm时会被解释为TRUE,而
mean()
则不会。我的猜测是as.logical("xyz")
返回NA,并被作为参数提供给na.rm,对于sum/min/max函数来说,这个奇怪的原因让NA被视为TRUE,但对于mean()
函数则不会。
sum(c(NA, 4, 5), na.rm = "xyz")
的预期输出应该是一个无法解释为逻辑值的参数错误(由mean函数返回)。我不明白为什么这种情况不会发生。
mean.default
中,if (na.rm)
的处理会产生错误,而我认为这种情况在min/max/sum
中不会发生,因为它们是原语。 - Rich Scrivenna.rm
将是有用的。请注意,na.rm="FALSE"
确实被解析为逻辑值,因此并不是任何字符串都变成了TRUE,比较如下:sum(c(1:3,NA), na.rm="xyz") == 6
,sum(c(1:3,NA), na.rm="TRUE") == 6
,以及sum(c(1:3,NA), na.rm="FALSE") == NA
。 - HenrikB