簡體   English   中英

從R中的列表和嵌套列表創建名稱向量

[英]Creating vector of names from list and nested list in R

我有一個嵌套列表,想要通過迭代列表的元素和R中每個元素的子元素來創建一個字符向量(用於文件路徑/輸出)。列表有174個元素,每個元素都有五個子元素(這些子元素的名稱在列表的每個元素中是一致的)。

例如,請參閱以下嵌套列表,其中包含兩個元素,每個元素包含五個子元素:

iter1 <- list(item1 = "a", item2 = "b",item3 = "c", item4 = "d",item5 = "e")
iter2 <- list(item1 = "a", item2 = "b",item3 = "c", item4 = "d",item5 = "e")
All <- list(iter1 = iter1, iter2 = iter2)

所需的矢量輸出將遵循以下結構(假設所有輸出都保存在標記為'output'的文件夾中:

[1] "output/iter1_item1.png"  
[2] "output/iter1_item2.png"  
[3] "output/iter1_item3.png"  
[4] "output/iter1_item4.png"  
[5] "output/iter1_item5.png"  
[6] "output/iter2_item1.png"...etc. 

除非我弄錯了,否則字符向量的長度應為870(174 * 5)。

我非常接近以下代碼:

for(i in 1:length(All)){
output_names <- paste0("output/",names(All[i]),"_",names(All[[i]]),".png")}

它產生一個長度為5的字符向量 - 基本上是第一個帶有五個子元素的元素。 我希望代碼迭代每個元素,以便捕獲其余元素(上面的可重現示例僅包含兩個元素,但我的原始列表包含175個元素)。

在此問題上提前感謝您的任何幫助。

使用示例數據,可以重復頂級名的適當次數,並sapply在列表GER底層的名字。

paste0('output/', rep(names(All), lengths(All)), '_', sapply(All, names), '.png')

#  [1] "output/iter1_item1.png" "output/iter1_item2.png" "output/iter1_item3.png"
#  [4] "output/iter1_item4.png" "output/iter1_item5.png" "output/iter2_item1.png"
#  [7] "output/iter2_item2.png" "output/iter2_item3.png" "output/iter2_item4.png"
# [10] "output/iter2_item5.png"

如果您的子列表具有不同的長度,則需要unlist(lapply(All, names))列表unlist(lapply(All, names))而不是sapply(All, names)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM