【发布时间】:2021-07-11 14:30:42
【问题描述】:
我正在创建一个脚本,该脚本将根据“参与者 ID”列将数据帧分成组,并将这些数据帧导出为 csvs。现在,我正在使用一个只有 7 个参与者 ID 的数据框,但该脚本将用于具有数百个参与者的 csv。
首先,这是一个数据框列表:
participant_id <- c("1", "1", "1", "2", "2", "2", "3", "3", "3", "4", "4", "4")
text <- c("Message1","Message1","Message1",
"Message2", "Message2", "Message2",
"Message3", "Message3", "Message3",
"Message4", "Message4", "Message4")
df <- data.frame(participant_id, text)
df_list <- split(df, df$participant_id)
然后我使用我编写的名为 clean_log 的函数清理列表中的每个数据帧(数据帧包含短信日志):
df_list <- lapply(df_list, clean_log)
我想将此列表中的每个数据帧写入 csv,但数据帧需要先保存为对象。我试着给它们命名:
names <- c()
for (i in 1:length(df_list)) {
names <- c(names, paste0("df", i))
}
names(df_list) <- names
然后我尝试在 for 循环中导出数据帧,但收到错误“get(names[i]) 中的错误:找不到对象‘df1’:
for (i in 1:length(names)) {
write.csv(get(names[i]),
paste0(path, names[i], ".csv"), row.names = FALSE)
}
我知道我可以简单地写
df1 <- df_list[1]
df2 <- df_list[2]
...
为每个数据框命名,但是当有数百个数据框要导出时,这将不起作用。有没有人遇到过这样的问题或有什么建议?
【问题讨论】:
-
是的,这是一个非常容易解决的问题。请阅读此内容并至少提供一个 df_list 示例。另外,你需要所有这些 csv 吗?您可以保留主文件并根据需要拆分吗? stackoverflow.com/help/minimal-reproducible-example
-
我刚刚更新了代码以希望遵循这些准则,让我知道它的外观!我需要将每个导出为单独的 csv 以上传到谷歌驱动器。