通过引用indeces添加data.frame列的更好方法

时间:2016-07-26 16:04:14

标签: r indexing dataframe add

这个问题似乎很基本,但我找不到答案。

我想通过引用它们的indeces来添加data.frame的列。

假设我想添加1,2和4列。

df <- data.frame(
  a=rep(1, 5),
  b=rep(2, 5),
  c=rep(3, 5),
  d=rep(4, 5)
)

我知道明确提到我可以做的列名

> df$a + df$b + df$d
[1] 7 7 7 7 7

指的是我能做的事情

> df[1] + df[2] + df[4]
  a
1 7
2 7
3 7
4 7
5 7

但是,上面的索引选项要求我为每个要添加的列写出data.frame的名称。

有没有办法将这些列添加到一起,只需引用indeces和data.frame一次?

5 个答案:

答案 0 :(得分:2)

或在data.table

dt[, sum := rowSums(.SD), .SDcols = c(1, 2, 4)]
dt[, sum := rowSums(.SD), .SDcols = c('a', 'b', 'd')]

答案 1 :(得分:1)

您可以使用rowSums函数并通过在df[, ]中设置列号向量来引用列。

rowSums(df[, c(1,2,4)]
[1] 7 7 7 7 7

答案 2 :(得分:1)

var a = {
     name:"321",
     foo: function(){
        console.log(name);
    }
}

a.foo();

答案 3 :(得分:1)

使用data.table的另一种解决方案:

require(data.table)  # Load package
dt <- data.table(df) # Convert to data.table
dt[, a + b + d]      # Sum columns
[1] 7 7 7 7 7  

答案 4 :(得分:1)

另一种选择是

Reduce(`+`, df[-3])
#[1] 7 7 7 7 7

或@PierreLafortune的变体

df$a + df$b + df$d
#[1] 7 7 7 7 7