为什么 pmax(dataFrame, int) 会引入 NA?

Why pmax(dataFrame, int) would introduce NAs?

我 运行 的行为 pmax 我不太明白:

pmax(data.frame(matrix(1:16, nrow=4)), c(6))

会return

  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),不会自从 max(NA, anything) = NA 以来,X2X3X4 都是 NA?为什么只把不在第一列且小于6的条目改成NAs?

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

或根据需要来回转换