2012-01-04 31 views
0

我想使用列表來保存兩個相同長度的數組。一個數組(folders)包含文件夾的名稱,另一個(files)包含文件名數組,其長度可能不同。如何將不同長度的數組保存到列表中的數組變量中R

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") 

當我試圖文件名的陣列添加到陣列「文件」,我收到一個警告,它說,我要添加元素數量過長的第二場。 「file2.dat」,「file3.dat」不保存到mvExp$files[2]

如何將不同長度的數組保存到列表中?

我也試過使用一個lisata.frame(因爲我的兩個數組有相同的長度),但我無法將元素添加到data.frame。

回答

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") 
+0

很好的答案,但你能不能請替換 「=」 和「< - 「每R標準? – 2012-01-04 20:31:20

+0

@CarlWitthoft - 完成。感謝您的建議。 – 2012-01-04 20:42:58

1

您可以將所有內容存儲在一個列表中。

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

Retrive文件夾名稱這樣

names(myExp) 

和文件與給定的文件夾,例如,

myExp[["../data_america"]] 
相關問題