我想在以下格式的矩阵中为每第二列添加每行的值:
1 1 100 2 104 4 200
2 1 100 2 103 3 203
3 1 100 3 101 3 304
4 1 100 4 105 2 201
在这里,我想添加第3列,然后每隔一列,产生以下输出:
404
406
505
406
这可以在没有for循环的情况下完成吗?
答案 0 :(得分:5)
假设您的数据框名为df
。
apply(df,1,function(x) sum(x[seq(3,length(x),2)]))
[1] 404 406 505 406
答案 1 :(得分:5)
你可以这样做:
rowSums(df[,-c(1,2)][, c(TRUE, FALSE)])
# [1] 404 406 505 406
其中[, -c(1,2)]
丢弃前两列,[, c(TRUE, FALSE)]
保留其他所有列。
答案 2 :(得分:2)
rowSums(df[,seq(from=3, to=ncol(df), by=2)])