使用变量向数据框添加列

时间:2014-02-19 20:09:50

标签: r dataframe

我有一个数据框,我想以编程方式构建。我事先有一些列,但不是全部,我想在它们出现时添加它们。 例如:

d <- data.frame("Test" = 0)

给了我这个:

  Test
1    0

以下内容:

d <- cbind( "Sun" = 0,d)

按预期工作:

  Sun Test
1   0    0

但是这个:

for ( i in daynames) {
    d <- cbind(i = 0 ,d)
}

产生这个:

    i   i   i   i   i   i   i Test
1 Sat Fri Thu Wed Tue Mon Sun    0

而不是:

  Sun Mon Tue Wed Thu Fri Sat Test
1   0   0   0   0   0   0   0    0

如何使用i的值而不是标识符本身将列绑定到数据框?有没有办法做到更像R的?

2 个答案:

答案 0 :(得分:1)

我认为它可以解决

d <- data.frame("Test" = 0)
daynames <- c("Sat", "Fri", "Thu", "Wed", "Tue", "Mon", "Sun") 
for ( i in daynames) {
        d <- cbind( 0 ,d)
    colnames(d)[1] <- i
}

答案 1 :(得分:1)

Vectorized,我首先将新列绑定在一起,然后将数据框绑定到新列。

d <- data.frame("Test" = 0)
daynames <- c("Sat", "Fri", "Thu", "Wed", "Tue", "Mon", "Sun") 

dayframe <- do.call(cbind.data.frame, as.vector(rep(0, length(daynames)), mode = "list"))
names(dayframe) <- daynames
cbind(d, dayframe)