2
我想矢量化在R中創建一個列表,但只能得到我想要的嵌套for循環。我已經包含了我的問題重現性的大大簡化版本。有人可以幫我修改或替換我的mapply功能嗎?如何複製一個嵌套for循環與mapply?
所需的功能:
my_list <- list()
A <- c("one", "two", "three", "four")
B <- c("left", "right")
for (a in A) {
for (b in B) {
my_list <- c(my_list, paste(a, b))
}
}
print(my_list)
輸出(爲簡潔起見編輯空格):
[[1]] [1] "one left"
[[2]] [1] "one right"
[[3]] [1] "two left"
[[4]] [1] "two right"
[[5]] [1] "three left"
[[6]] [1] "three right"
[[7]] [1] "four left"
[[8]] [1] "four right"
我試圖向量化的:
combinate <- function(a, b) {
return(paste(a, b))
}
mapply(combinate, a=A, b=B, SIMPLIFY=FALSE)
輸出:
$one [1] "one left"
$two [1] "two right"
$three [1] "three left"
$four [1] "four right"
我不關心標籤;我很擔心從這兩個列表中獲取所有八個結果。我已經找到了文檔,通過將兩個列表中的第一個項目配對,然後從兩個列表中的第二個項目重複較短的列表,mapply正在完成它應該做的事情。但經過大量搜索之後,我無法找到必須存在的內容,這種方法可以像嵌套for循環一樣組合地對所有列表項進行配對。
我學習困難的方式檢查,雖然這些做什麼我問過的問題,他們不發揮作用不太一樣了-循環。粘貼功能沒有被調用8次,每次都有不同的變量,但傳遞了兩個列表或8個項目的數組。外部函數期望粘貼函數(或您提供的任何自定義函數)可以正確處理。或者如果我仍然誤解,請糾正我。 :) – mightypile
@mightypile在'outer'中,'FUN'參數是'paste'。 「外層」做的是獲得每個向量元素的組合,並通過指定「粘貼」爲「FUN」,它正在粘貼 – akrun