Mic*_*ley 0 filtering 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= " ")}
Run Code Online (Sandbox Code Playgroud)
但是尝试将其应用于包含多个数据框名称(名称)的向量
nameproduct <- lapply(names, productiveseq)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
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
Run Code Online (Sandbox Code Playgroud)
因为您传递的是数据框名称的字符向量而不是数据框对象本身,所以请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)
Run Code Online (Sandbox Code Playgroud)