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

标签 r dataframe na

我遇到了一个我不太理解的 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/

相关文章:

r - 在 R - shapefile 中转换空间数据时出现问题

Python pandas - 平均 10 分钟测量到 15 分钟平均值和 60 分钟平均值,具体取决于数据差距的长度

r - 按降序排列 facet_wrap 图

xml - 将 XMLInternalDocument 转换为字符向量

python-3.x - Pandas : Get the count of values and ID from a pattern of 1 and 0 in a pandas dataframe

python Pandas : create a new column for each different value of a source column (with boolean output as column values)

python - Pandas 不会重命名多索引列名

替换因子列中的 <NA>

r - 如何在面板数据回归中处理NA?

r - 融化数据框和拆分值