使用c(x:y)调用文件

时间:2016-10-21 21:12:56

标签: r for-loop

我有大量的文件(GB大小)。我想运行一个for循环,在其中调用一些文件,执行创建一些文件的处理,将它们绑定在一起并保存。

AA<-c(1,6)
BB<-c(5,10)
for(i in length(AA)){
    listofnames<-list.files(pattern="*eng")
    listofnames<- listofnames[c(paste(AA[i],BB[i],sep=":"))]
    listoffiles <- lapply( listofnames, readRDS)
}

但是listofnames有NA。我做错了什么?

1 个答案:

答案 0 :(得分:1)

我花了一些时间查看你的代码才意识到你实际上正在尝试构建一个表达式1:5字符表示,该表达式应该按位置索引向量。这是非常错误的;你只能将paste组合在一起任意R命令/表达式,并期望随时随地将它们放入你的代码中。 (从技术上讲,有些工具可以做到这一点,但不鼓励他们。)

可能你正在寻找更接近的事情:

listofnames <- list.files(pattern="*eng")
ind <- rep(1:5,each = 5,length.out = length(listofnames))
listofnames_split <- split(listofnames,ind)

for (i in seq_along(listofnames_split)){
  my_data <- lapply(listofnames_split[[i]], readRDS)
  #Do processing here
  #...
  rm(my_data) #Assuming memory really is a problem
}

但我在这里只勾勒出假设的代码,因为你的例子并没有完全充实,所以我无法与你的确切情况相提并论。