如果任何值为非正数,则将行替换为 NA

标签 r apply

我的数据集如下:

df <- data.frame(
     A = c(-1, 2, 3),
     B = c(1, 1, -1))
df
#    A  B
# 1 -1  1
# 2  2  1
# 3  3 -1

我试图获得以下结果,其中两个 A 时都保留值和 B是积极的:

   A  B
1 NA  NA
2  2  1
3 NA  NA

我试过df2 <- apply(df, 1:2, function(x) if (x > 0) x else NA) ,但它在 A 时返回值或 B是积极的。如何添加第二个条件?

最佳答案

您可以将每一列乘以一个向量,如果该行中的所有值都是正数,则该向量取值为 1,否则取值为 NA:

df * ifelse(rowSums(df <= 0) > 0, NA, 1)
#    A  B
# 1 NA NA
# 2  2  1
# 3 NA NA

关于如果任何值为非正数,则将行替换为 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45513469/

相关文章:

r - 如何将单列长数据框转换为单行宽数据框?

python - 抓取 : download files from url

r - 将 gridExtra::grid.arrange 的输出存储到一个对象中

r - 计算与其他列的双重类别关联的列中的特定字符。根据频率仓迭代进行

r - 应用函数循环遍历 R 中数组的 3 个维度中的 2 个维度

r - 变异列以检测变体数量

r - 如何使用 apply R 匹配 Row 和 Row +1

r - Shiny 应用程序的初始加载没有更新

oop - 有没有办法初始化 S4 对象以便返回另一个对象?

javascript - 原型(prototype)函数污染 JavaScript 数组