我想使用一个列表来保存两个长度相同的数组。一个数组(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中添加元素。
答案 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"]]