附加到对象列表

时间:2014-12-10 08:51:30

标签: r

我正在尝试在R中获取复杂对象(文件连接)的列表。 有一个带文件名的字符向量。我想用file()打开每个文件并将其连接对象存储在某处(以便稍后关闭它们)。文件名向量的长度是可变的。我想做的是:

files <- c("file1", "file2", "file3") #just for example
f <- list()
for (i in 1:length(files))
{
  f<- append(f, file(files[i], open="wt"))
}

不幸的是,f成为整数列表,我不能为其元素运行close()

我需要它来保留连接对象列表:

list(file("fname1"),file("fname2"),file("fname3"))

如果在循环下用list()替换append(),它将不会将连接转换为整数,但这将是列表列表等列表。

1 个答案:

答案 0 :(得分:1)

迭代地将项目附加到列表不是R样式。更正确的是使用迭代给定对象的lapply函数,应用用户定义的函数并返回列表。有三个调用应该给出相同的结果(未测试)。

files_connections <- lapply(files, function(f) file(f, open="wt"))
files_connections <- lapply(files, file, "wt")
files_connections <- lapply(files, file, open="wt")