4

我想在以下形式的矩阵中为每第二列添加每一行的值:

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

在这里,我想添加第三列,然后每隔一列,产生以下输出:

404
406
505
406

这可以在没有 for 循环的情况下完成吗?

4

3 回答 3

5

假设您的数据框名为df.

 apply(df,1,function(x) sum(x[seq(3,length(x),2)]))
[1] 404 406 505 406
于 2013-01-01T18:38:44.217 回答
5

你可以做:

rowSums(df[,-c(1,2)][, c(TRUE, FALSE)])
# [1] 404 406 505 406

where[, -c(1,2)]丢弃前两列并[, c(TRUE, FALSE)]保留每隔一列。

于 2013-01-01T20:04:00.770 回答
2
rowSums(df[,seq(from=3, to=ncol(df), by=2)])
于 2013-01-02T09:54:11.270 回答