如何在R数据帧中用零/ NA替换每行中的一定数量的元素(每行不同)?

时间:2016-12-19 12:45:09

标签: r subset

让数据在X中如下所述  A B C D E F
 1 3 4 6 9 2
 1 2 4 6 8 1
 6 7 9 3 1 3
1 1 2 1 2 7
每行中要替换为零的前n个元素的数量是 ñ
2
3
1
4

结果矩阵应该像
 A B C D E F
 0 0 4 6 9 2
 0 0 0 6 8 1
 0 7 9 3 1 3
0 0 0 0 2 7

哪种方式在R中做到最好?我的实际数据有大约5000万行和120列。我可能还需要重复上一栏中用零替换的过程。

1 个答案:

答案 0 :(得分:2)

我们可以为此

使用row/column索引
X[cbind(rep(1:nrow(X), v1), sequence(v1))] <- 0
X
#   A B C D E F
# 1 0 0 4 6 9 2
# 2 0 0 0 6 8 1
# 3 0 7 9 3 1 3
# 4 0 0 0 0 2 7

,其中

v1 <-  c(2, 3, 1, 4)