我有一个数据框,我想以编程方式构建。我事先有一些列,但不是全部,我想在它们出现时添加它们。 例如:
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的?
答案 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)