我想用两个data.frame对象做一个cbind。但是第一个是空的,只是为循环迭代创建的。我想知道这是否可能。
当我尝试:data <- data.frame()
data1 <- cbind(data, mpg)
Dataframe 中的错误(...,检查名称= FALSE):参数表示不同的行数:0、234
我没有成功。
我的循环稍微长一点,但一般来说,我有大约100个文件,我需要在其中创建taxa_col_name
变量,并需要将循环中生成的data.frame添加到data.frame中,这将是我的最终基础。
data <- data.frame()
for (i in 1:100) {
rate_col_name <- sprintf("rate_%s", i)
data1 <- data1 %>%
mutate(!!rate_col_name:=
(population_2000)*((population_2010/population_2000_previous)))
data1$population_2010 = NULL
data1$population_2000_previous <- NULL
rm(pop_2000_previous, pop_2010)
gc()
date <- cbind(date, date1)
}
1条答案
按热度按时间vptzau2j1#
当你试图用
data1
来cbind
现有的空的data
时会发生这种情况,data1
实际上有行,大概有一列,这是因为对于cbind,两个 Dataframe 需要有相同的行数,产生这种错误的最小例子是:对你来说,这发生在你的循环的第一次迭代的末尾,这里有一个简短的版本:
一种解决方案是在循环的第一次迭代中用实际数据初始化
data
:也可以在循环外“手动”进行第一次迭代,然后在2而不是1开始循环:
另一种解决方案是从
list
开始,最后将其转变为data.frame
: