[英]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.