gpt4 book ai didi

r - 将列表中的每个数据框导出到 csv

转载 作者:行者123 更新时间:2023-12-04 11:34:54 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Write many files in a for loop

(2 个回答)


7年前关闭。




我有一个数据框列表。每个数据框具有相同的列名和不同数量的行。我想将列表中的每个数据框导出到它自己的 csv 文件。文件名应该是数据框的名称。我浏览了几个论坛帖子以尝试不同的建议,但许多帖子要么不起作用,要么给了我一个空白的 csv 文件。我查看的大多数帖子都大约有 4 年的历史,所以这可能是其中的一部分。

这是我目前拥有的代码:

    #Export each data frame within a list
export = function(data){
filename = function(x) paste(names(data[[x]]), ".csv");
write.csv(data, filename,);
}

export(data)

我得到的错误是
"Error in data.frame(list(Column1 = c(1L, 2L, 3L, 4L, : 
arguments imply differing number of rows: 62, 49, 41, 55, 39, 32, 34

然后我想,也许我需要在 write.csv 中使用 data[[x]] 来读取:
    write.csv(data[[x]], filename,)

但这给了我错误 "Error in is.data.frame(x): object 'x' not found"
这是我的数据框列表的结构。
    str(data)
List of 10
$ :'data.frame': 62 obs. of 6 variables:
..$ TQ: Factor w/ 396 levels "V0Q1",..: 167 168 97 192 2 98 193 194 99 3 ...
..$ CO : int [1:62] 1 1 1 1 1 1 1 1 1 1 ...
..$ PhP : int [1:62] 166576 565275 1091111 1181342 1735982 2237418 2354002 3869267 6155933 7027686 ...
..$ Position : num [1:62] 0 0.456 2.419 2.63 3.792 ...
..$ D : Factor w/ 2 levels "D2012",..: 1 1 1 2 1 1 2 2 1 1 ...
..$ bin_index : int [1:62] 1 1 1 1 1 2 2 2 3 3 ...
$ :'data.frame': 49 obs. of 6 variables:
..$ TQ: Factor w/ 396 levels "V03Q1",..: 227 169 228 229 230 231 232 233 234 235 ...
..$ CO : int [1:49] 2 2 2 2 2 2 2 2 2 2 ...
..$ PhP : int [1:49] 805189 2219895 3386011 3999185 4430767 4644792 5223962 5392366 6052813 6136478 ...
..$ Position : num [1:49] 0.16 5.95 9.87 12.69 15.22 ...
..$ D : Factor w/ 2 levels "D2012",..: 2 1 2 2 2 2 2 2 2 2 ...
..$ bin_index : int [1:49] 1 2 2 3 4 4 4 4 5 5 ...
$ :'data.frame': 41 obs. of 6 variables:
..$ TQ: Factor w/ 396 levels "V03Q",..: 28 257 258 105 144 29 106 30 145 259 ...
..$ CO : int [1:41] 3 3 3 3 3 3 3 3 3 3 ...
..$ PhP : int [1:41] 1055462 2022884 2222474 2269935 3497149 3755007 5079223 6855634 7091838 10284891 ...
..$ Position : num [1:41] 1.3 4.94 7.52 8.34 11.28 ...
..$ D : Factor w/ 2 levels "D2012",..: 1 2 2 1 1 1 1 1 1 2 ...
..$ bin_index : int [1:41] 1 1 2 2 3 3 4 5 6 8 ...

有什么建议?谢谢你。

最佳答案

发生错误是因为您尝试将列表传递给 write.csv ,但它需要一个data.frame。它有助于尝试将列表强制转换为 data.frame,但未成功并告诉您。您需要遍历列表。循环有不同的可能性,但我更喜欢旧的 for循环这样的事情。

试试这个(未测试):

for (i in seq_along(data)) {
filename = paste(names(data)[i], ".csv")
write.csv(data[[i]], filename)
}

当然,您可以将其包装在一个函数中。

编辑:

显然你列出的元素没有命名。试试这个:
for (i in seq_along(data)) {
filename = paste(i, ".csv")
write.csv(data[[i]], filename)
}

关于r - 将列表中的每个数据框导出到 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21189373/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com