【发布时间】:2015-05-20 21:54:14
【问题描述】:
我有 2 个包含文本文件的文件夹:Aba 包含 90 个文件,Baa 包含 50 个文件。我有一段代码,我从两个文件夹中打开具有相同名称的文件并执行操作。
dna_no= read.table("/home/Documents/Baa/112.txt",skip=1, header=TRUE, sep="\t", fill=FALSE)
sim = read.table("/home/Documents/Data/Aba/112.txt",header=FALSE, sep="\t")
然后我想对文件内容执行代码:
从 sim 中选择第一列 dna_no 与第一列 sim 匹配的行:
sm_dna= sim[which(dna_no[,1]%in%sim[,1]),]
sim_nn17 = cbind(sm_dna[,1],sm_dna[,4:6]
等等
现在我想一次性对 Baa 中的所有文件执行此操作,从 Aba 中找到具有相同名称的文件并执行上述操作。
我正在使用 list.files:
filenames= list.files("/home/Documents/Baa/", full.names=TRUE)
file_sim= list.files("/home/Documents/Data/Aba/",full.names=TRUE)
ldf <- lapply(filenames, function(x) read.table(x,skip=1))
tcf <- lapply(file_sim, function(z) read.table(z,colClasses = c(rep("numeric", 6), rep("NULL", 1)),header=FALSE, sep="\t"))
所以现在我需要在 tcf [i] 中找到相同的 ldf[i] ,即具有相同名称的文件(例如 112 个文件名都是数字),我无法弄清楚如何使用 list.files似乎不安全的文件名。
然后为每个文件执行代码。
myFun <- function(filenames){
对每个文件进行上述相同的操作:
sm_dna= ..
sim_nn17 =..
...}
我不确定这里的代码是如何变化的? 没有循环可以做到这一点吗?
该代码适用于单独的文件,但不适用于文件夹中的一批文件。
非常感谢您的帮助!
【问题讨论】:
-
list.files返回文件名向量,即一维对象。为什么filenames[,1] %in% file_sim[,1]中有[,1]位?我想这会导致错误 -
@arvi1000 抱歉看到我更新的问题。这只是一个例子。我基本上需要为文件夹中的整批文件应用为单个文件设计的代码..