我想循环遍历目录名称的向量,并将目录名称插入到read.table函数中并“查看”循环外的表。 我有一个目录名称向量:
dir_names <- c("SRR2537079","SRR2537080","SRR2537081","SRR2537082", "SRR2537083","SRR2537084")
我现在想要遍历这些并读取每个目录中的表。 我有:
list.data<-list()
for(i in dir_names){
#print(i)
list.data[[i]] <- read.table('dir_names[i]/circularRNA_known.txt', header=FALSE, sep="\t",stringsAsFactors=FALSE)
}
但这不是识别dir_names [i]。我不得不以某种方式使用粘贴吗?
答案 0 :(得分:2)
你是对的,你需要粘贴这个值。我也将是列表元素而不是数字,因此您不需要将其称为dir_names [i]只是我
list.data<-list()
for(i in dir_names){
#print(i)
list.data[[i]] <- read.table(paste0(i,'/circularRNA_known.txt'), header=FALSE, sep="\t",stringsAsFactors=FALSE)
}
我是否也可以建议(只是为了您的信息,如果您想要一个更优雅的解决方案),您可以使用plyr的llply而不是循环。这意味着它可以在一行内发生,并且可以轻松地更改输出以将所有文件组合成data.frame(使用ldply),如果它们是一致的格式
list.data.2 <- llply(dir_names, function(x) read.table(paste0(x,"/circularRNA_known.txt"), header=FALSE, sep="\t",stringsAsFactors=FALSE))
答案 1 :(得分:1)
dir_names[i]
应该用作变量。
list.data<-list()
for(i in (1:length(dir_names))){
#print(i)
list.data[[i]] <- read.table(paste0(dir_names[i], '/circularRNA_known.txt'), header=FALSE, sep="\t",stringsAsFactors=FALSE)
}