cbind 与空对象进行循环迭代

问题描述 投票:0回答:1

我想用两个 data.frame 对象做一个 cbind。但是第一个是空的,只是为循环迭代创建的。我想知道是否可能。

当我尝试时:

data <- data.frame()

data1 <- cbind(data, mpg)

data.frame(..., check.names = 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)
}
r cbind
1个回答
0
投票

最好先创建一个

list
数据集,然后再绑定它,即

lst1 <- vector('list', 100)
    
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()
lst1[[i]] <- data1
}

然后

cbind
列表元素为

data <- do.call(cbind, lst1)
© www.soinside.com 2019 - 2024. All rights reserved.