我遇到了一个我不太理解的 pmax
行为:
pmax(data.frame(matrix(1:16, nrow=4)), c(6))
会回来
X1 X2 X3 X4
1 6 NA 9 13
2 6 6 10 14
3 6 7 11 15
4 6 8 12 16
我不明白的是为什么只有小于 6 且不在第一列的条目变成了 NA
- 如果我们回收 c(6, NA, NA, NA)
遍历行,X2
, X3
, X4
不都是 NA
因为 max(NA, anything) = NA
?为什么只将不在第一列且小于 6 的条目更改为 NA
?
最佳答案
pmax
不适用于 data.frame 输入。
错误在pmax
的第35行引入:
mmm[change] <- each[change]
因为 each
被定义为与输入的 length
一样长,对于 data.frame 来说就是列数。因此,当它尝试寻址第 5 个元素时,它会得到 NA。
each
[1] 6 6 6 6
each[change]
[1] 6 6 6 6 NA
明显的解决方法是在使用 pmax
之后转换为 data.frame:
data.frame(pmax(matrix(1:16, nrow=4), c(6)))
X1 X2 X3 X4
1 6 6 9 13
2 6 6 10 14
3 6 7 11 15
4 6 8 12 16
或者根据需要来回转换。
关于r - 为什么 pmax(dataFrame, int) 会引入 NA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30265511/