For循环读取表R

时间:2018-01-16 00:57:23

标签: r for-loop

我想循环遍历目录名称的向量,并将目录名称插入到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]。我不得不以某种方式使用粘贴吗?

2 个答案:

答案 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)
}