【发布时间】:2016-11-09 01:54:06
【问题描述】:
我正在处理 5 个要过滤的数据框(如果它们与正则表达式匹配,则删除一些行)。因为所有数据框都相似,具有相同的变量名称,所以我将它们存储在一个列表中并对其进行迭代。但是,当我想为每个原始数据帧保存过滤后的数据时,我发现它创建了一个 i_filtered(而不是 dfName_filtered),因此每次循环运行时,它都会被覆盖。 这是我在循环中的内容:
for (i in list_all){
i_filtered1 <- i[i$chr != filter1,]
i_filtered2 <- i[i$chr != filter2,]
#Write the result filtered table in a csv file
#Change output directory if needed
write.csv(i_filtered2, file="/home/tama/Desktop/i_filtered.csv")
}
正如我所说,filter1 和 filter2 只是我用来过滤 chr 列中的数据的正则表达式。 将原始名称+“_filtered”分配给新数据框的正确方法是什么?
提前致谢
编辑添加信息: 每个数据框都有这些变量(但值可以改变)
chr start end length
chr1 10400 10669 270
chr10 237646 237836 191
chrX 713884 714414 531
chrUn 713884 714414 531
chr1 762664 763174 511
chr4 805008 805571 564
我已将它们全部存储在一个列表中:
list_all <- list(heep, oe, st20_n, st20_t,all)
list_all <- lapply(list_all, na.omit)
过滤器:
#Get rid of random chromosomes
filter1=".*random"
#Get rid of undefined chromosomes
filter2 = "ĉhrUn.*
我正在寻找的输出是:
heep_filtered1
heep_filtered2
oe_filtered1
oe_filtered2
etc
【问题讨论】:
-
添加一个最小的可重现示例。
-
@Alex,添加了更多信息。
-
@Gregor,列表已经完成,我正在循环中遍历它
-
阅读本文会有所帮助:stackoverflow.com/help/mcve
标签: r list loops dataframe filtering