如何将不同长度的数组保存到R中列表的数组变量中

时间:2012-01-04 16:15:14

标签: arrays list r dataframe

我想使用一个列表来保存两个长度相同的数组。一个数组(folders)包含文件夹的名称,另一个数组(files)包含文件名数组,可能长度不同。

mvExp = list(
    folders     = NULL,
    files       = NULL
)

mvExp$folders[1] = "../data_america/"
mvExp$files[1]  = c("file1.dat")

mvExp$folders[2] = "../data_europe"
mvExp$files[2]  = c("file1.dat", "file2.dat", "file3.dat")

当我尝试将文件名数组添加到数组“files”的第二个字段时,我收到一条警告,其中说我要添加的元素数量太长。 “file2.dat”,“file3.dat”未保存到mvExp$files[2]

如何将不同长度的数组保存到列表中?

我也尝试使用'data.frame'(因为我的两个数组长度相同),但我无法在data.frame中添加元素。

2 个答案:

答案 0 :(得分:2)

尽管mvExp$folders可以是一个简单的字符向量(每个文件夹包含一个字符串),但mvExp$files需要是一个列表,因此它的一些元素可以自己包含多个元素(即目录中的文件)。

要使其正常工作,您的代码需要进行两项更改:

  • file需要作为列表“初始化”。

  • 要将新元素分配到列表,请使用"[[<-"运算符,而不是"[<-"运算符。

mvExp = list(
    folders     = character(),
    files       = list()
)

mvExp$folders[1] <- "../data_america/"
mvExp$files[[1]] <- c("file1.dat")

mvExp$folders[2] <- "../data_europe"
mvExp$files[[2]] <- c("file1.dat", "file2.dat", "file3.dat")

答案 1 :(得分:1)

您可以将所有内容存储在一个列表中。

myExp <- list(
  `../data_america` = "file.dat",
  `../data_europe`  = c("file1.dat", "file2.dat", "file3.dat")
)

检索像这样的文件夹名称

names(myExp)

和给定文件夹的文件,例如,

myExp[["../data_america"]]