我是处理列表中存储的数据帧的新手,并且存在以下问题:
假设,我有一个存储在列表中的各种相似数据帧的列表。
单个数据帧(df)如下所示:
A B C D
a. 0|0. 1|1 10
b. 0|1. 0|1 20
c. 1|1. 1|0 30
d. 1|0. 0|0 40
输出:
A B_1 B_2 C_1 C_2 D
a. 0 0. 1. 1. 10
b. 0 1 0. 1 20
c. 1. 1. 1. 0 30
d. 1. 0. 0. 0 40
我可以针对单个数据帧执行此操作
library(splitstackshape)
cSplit(df, 2:3, sep = "|", type.convert = FALSE)
但是现在我有多个相似的数据帧存储在一个列表(列表的列表)中,并且我要拆分的列的索引并不总是相同,但是可以变化。
我写了这样的东西:
list_splitted <- lapply(list_to_split, function(x) {(str_split(x[[i]], "|"))})
但是似乎拆分了列,但是列表内所有数据框中的所有其他列均已删除。
非常感谢任何帮助,谢谢
答案 0 :(得分:0)
我想我找到了解决问题的方法:
list_ALL2<-list()
for(i in seq_along(list_ALL)){
list_ALL2[[i]]<-cSplit(list_ALL[[i]], 7:length(list_ALL[[i]]), sep="|", type.convert = F)
}
这将创建一个空列表(list_ALL2),并使用通过将cSplit应用于列表中存储的所有数据帧的列而创建的元素填充列表(list_ALL)。要排序的列数是从第7列到数据帧的末尾,可以变化。列包含|在cSplit中用作sep参数的字符。