gpt4 book ai didi

r - 在 R 中的数据框列表中添加 ID 列

转载 作者:行者123 更新时间:2023-12-04 10:04:45 25 4
gpt4 key购买 nike

我有一个要合并在一起的 XML 文件列表,但我想弄清楚如何添加 "id"根据文件名将列添加到每个数据框。


# BUILD DATAFRAME LIST
list_filenames <- list.files(pattern = ".xml$")

df_list <- lapply(list_filenames, function(f) {

list_ids <- as.list(list_filenames)

doc <- xmlParse(f, useInternalNodes = TRUE)
doc2 <- xmlToDataFrame(doc, nodes = getNodeSet(doc, "//Event"))
mapply(cbind, doc2, "id" = list_ids, SIMPLIFY = F) # Code that kind of works

})

final_df <- do.call(rbind, df_list)

我希望得到看起来像这样的东西:
ex_df <- cbind(x = c(3, 2, 10, 12),
y = c("a", "b", "c", "d"),
id = c("file_name_1", "file_name_1", "file_name_2", "file_name_2")) %>%
as.data.frame()

> ex_df
x y id
1 3 a file_name_1
2 2 b file_name_1
3 10 c file_name_2
4 12 d file_name_2

最佳答案

我们可以使用 Map

nm1 <- sub("\\.xml$", "", list_filenames)
out <- do.call(rbind, Map(cbind, df_list, id = nm1))

在 OP 的代码中,我们循环了 list_filenames然后在第二行,使用全套 list_filenames
as.list(list_filenames)

相反,它只是“f”,即
df_list <- lapply(list_filenames, function(f) {

list_id <- sub("\\.xml$", "", f) #####

doc <- xmlParse(f, useInternalNodes = TRUE)
doc2 <- xmlToDataFrame(doc, nodes = getNodeSet(doc, "//Event"))
doc2$id = list_id
doc2

})

然后,我们可以 rbind `列表元素
 do.call(rbind, df_list)

关于r - 在 R 中的数据框列表中添加 ID 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61644520/

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