让数据在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列。我可能还需要重复上一栏中用零替换的过程。
答案 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)