如何在for循环中创建新的数据框

时间:2021-05-27 15:58:00

标签: r dataframe for-loop iteration

我想把下面的代码压缩成一个for循环:

day1 = data.frame(cbind("ID" = data$ID, "outcome" = outcome, "age" = age, "day" = days[,1], "val" = val[,1]))
day2 = data.frame(cbind("ID" = data$ID, "outcome" = outcome, "age" = age, "day" = days[,2], "val" = val[,2]))
day3 = data.frame(cbind("ID" = data$ID, "outcome" = outcome, "age" = age, "day" = days[,3], "val" = val[,3]))
day4 = data.frame(cbind("ID" = data$ID, "outcome" = outcome, "age" = age, "day" = days[,4], "val" = val[,4]))
day5 = data.frame(cbind("ID" = data$ID, "outcome" = outcome, "age" = age, "day" = days[,5], "val" = val[,5]))
day6 = data.frame(cbind("ID" = data$ID, "outcome" = outcome, "age" = age, "day" = days[,6], "val" = val[,6]))
day7 = data.frame(cbind("ID" = data$ID, "outcome" = outcome, "age" = age, "day" = days[,7], "val" = val[,7]))

我正在尝试创建 7 个名为 day1day7 的数据框。我还想从 daysval 数据框中的相应列中提取信息。我已经写了以下 for 循环,但它不起作用。有什么建议吗?

for (i in 1:7) {
  name = paste0("day",i)
  name <- data.frame(cbind("ID" = data$ID, 
                           "outcome" = outcome, 
                           "age" = age, 
                           "day" = days[i], 
                           "val" = val[i]))
}

1 个答案:

答案 0 :(得分:0)

类似于您所要求的(来自 for 循环的名为 dayi 的数据帧):

day <- list()
for (i in 1:7) {
  day[[i]] <- data.frame(cbind("ID" = data$ID, 
                           "outcome" = outcome, 
                           "age" = age, 
                           "day" = days[i], 
                           "val" = val[i]))
}

唯一的区别是你的数据框将被 day[[i]] 而不是 dayi 调用。这样做的好处是将它们全部组合在一个列表中