【发布时间】:2021-08-15 22:21:35
【问题描述】:
我想把下面的代码压缩成一个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 个名为 day1 到 day7 的数据框。我还想从days 和val 数据框中的相应列中提取信息。我已经编写了以下 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]))
}
【问题讨论】:
-
考虑一个
lapply解决方案,以避免初始化列表和按索引迭代分配的簿记。此外,不需要cbind或引用名称:df_list <- lapply(1:7, function(i) data.frame(ID = data$ID, ..., day = days[,i], val = val[,i]))。
标签: r dataframe for-loop iteration