r - 使用 lapply 过滤多个数据集
问题描述
我正在尝试从数据框中过滤掉行并将生成的较短数据框写入新文件。我可以处理单个文件,但是尝试使用 lappy 在多个文件上运行此过程(并为输出文件提供不同的名称)证明很麻烦。
我试图根据“aaSeqCDR3”中的值是否包含“_”或“*”来过滤掉行
到目前为止,我有:
productseq <-function(x){
#establish filter criteria
filter <- c("\\*", "_")
#Filter data set to new variable
df2 <- df[!grepl(paste(filter, collapse = "|"), df$aaSeqCDR3),]
write.delim(df2, "df2.txt", sep= " ")}
但是试图将其应用于包含多个数据框名称(名称)的向量
nameproduct <- lapply(names, productiveseq)
我得到错误:
UseMethod(“filter_”)中的错误:没有适用于“filter_”的方法应用于“character”类的对象
我现在很迷茫,如果有任何见解,我将不胜感激。
下面是一个示例数据框:
ID allDHitsWithScore allJHitsWithScore allCHitsWithScore aaSeqCDR3
0 290 0.031402274 TGTGCCAGCGGCAGCCCCAATTCACCCCTCCACTTT CASGSPNSPLHF
1 168 0.018191662 TGTGCTCTGAGTGATCAGAATAAGGGCAGGAGAGCACTTACTTTT CALSDQNKGRRALTF
2 49 0.005305902 TGTGCAGTCTCCAAAGCTGCAGGCAACAAGCTAACTTTT CAVSKAAGNKLTF
3 16 0.001732539 TGCAGTGCTAGAGGGCGCTTAGCCAAAAACATTCAGTACTTC CSARGRLAKNIQYF
4 15 0.001624256 TGTGCCTGAAGGAATGCAGGCAAATCAACCTTT CA*RNAGKSTF
5 14 0.001515972 TGCAGTGCTAGAGTTGGACAGGGAGGGTTCTTC CSARVGQGGFF
6 13 0.001407688 TGTGCCAGCAGTTACTTGGGACAGGGGGGAAACATTCAGTACTTC CASSYLGQGGNIQYF
7 12 0.001299404 TGTGCCAGCAGTTTATGGGACTAGCGGGGGGTTCGAGCTCCTACAATGAGCAGTTCTTC CASSLWD*RG_SSSYNEQFF
解决方案
因为您传递的是数据框名称的字符向量,而不是数据框对象本身,所以get
请在函数内部使用。
另外,请注意您正在写入同一个文件df2.txt,因此每次迭代都会覆盖同一个文件。要解决此问题,请将x字符值粘贴到文本文件名。并确保返回数据帧而不是NULL
从write.delim
函数的最后一行调用。
productseq <- function(x) {
# Retrieve data frame
df <- get(x)
# Establish filter criteria
filter <- c("\\*", "_")
# Filter data set to new variable
df2 <- df[!grepl(paste(filter, collapse = "|"), df$aaSeqCDR3),]
write.delim(df2, paste0(x, ".txt"), sep= " ")
# Return filtered data
return(df2)
}
# LIST OF FILTERED DATA FRAMES EACH EXPORTED TO .txt FILE
nameproduct <- lapply(names, productiveseq)
推荐阅读
- git - 如何从我的 Macbook 上完全卸载 git?
- android - Oreo:如何从后台捕捉位置更新?
- python - Python - 如果“a”或“b”
- oracle - Oracle 导出默认日期
- c# - INSERT 语句与我尝试在循环中保存的每个 Second Record 的 FOREIGN KEY 约束冲突
- devops - SaltStack 公式中的手动批准
- c++ - 如何将结构内的数组编组为本机 dll
- log4j - 不同地方的不同日志级别
- python-3.x - 如何在 Windows 7 中自动安装 python 库(在我们的脚本文件中导入)
- dialogflow-es - 保存意图时出现许多弹出错误