【发布时间】:2021-11-26 10:50:06
【问题描述】:
我有一个这种结构的嵌套列表:
test_list <- list(
"some string",
list(type = "entry_type", text = "some content"),
list("more strings"),
list(type = "another_type", text = "more text yet"),
""
)
所以它是一个包含列表和普通条目的列表,而唯一的名称是嵌套列表中的项目的名称——它们是重复的。
我的目标是将其转移到具有原始名称(假设它们存在)但唯一的 data.table 中。
目前我使用这个管道:
library(data.table)
dt <- as.data.table(flatten(test_list))
unique_names <- paste0("V", seq_len(length(names(dt))))
propper_names <- names(dt)
new_names <- propper_names
blank_names <- which(new_names == "")
new_names[blank_names] <- unique_names[blank_names]
duplicates_names <- which(duplicated(new_names))
new_names[duplicates_names] <- paste(
propper_names[duplicates_names],
unique_names[duplicates_names],
sep = "_"
)
setnames(
dt,
new_names
)
有没有更好/更快/更好/更健壮的方法来实现这个目标?
【问题讨论】:
-
flatten()来自哪里?
标签: r data.table