%dopar%
및 foreach
을 사용할 예정이며 출력을 결합해야합니다.목록의 해당 요소를 벡터 또는 목록으로 결합하십시오.
병렬로 호출 할 함수는 각 호출에 대해 일정한 길이를 갖는 목록을 출력합니다. 그러나이 목록의 요소 길이는 항상 일정하지는 않습니다.
결합 후 결과를 최대한 단순화하고 각 요소의 원본 목록 (반복)을 식별 할 수있게하고 싶습니다.
B/C 길이가 이보다 깊은 곳에서 다르다면, answers like this은 나를 거기에 데려다주지 않습니다.
list1 <- list(rnorm(1), rnorm(1), rnorm(1), rnorm(8))
list2 <- list(rnorm(1), rnorm(1), rnorm(1), rnorm(8))
list3 <- list(rnorm(1), rnorm(1), rnorm(1), rnorm(14))
do.call(Map, c(c, list(list1, list2, list3)))
이 제공 :
[[1]]
[1] -0.2923462 0.4891224 -0.5080176
[[2]]
[1] 0.3229466 0.9511572 -0.9815504
[[3]]
[1] -1.160413 0.707568 -1.564874
[[4]]
[1] -1.13093146 0.06791923 0.65380844 1.01829862 0.47360903 0.68616334 -1.07166155 -1.54018814 -0.60860430 1.64524185 0.40222817 -0.54747627
[13] -1.73420011 0.67861611 0.55527953 1.36454409 0.40215155 -0.65706184 -0.71008434 -1.11484886 -0.69811408 -0.45451101 -0.85574891 -0.79241329
[25] 0.31018144 -0.03212242 -1.55192430 -2.19142725 -1.85528112 0.85204097
및 do.call(Map, c(list, list(list1, list2, list3)))
이 제공 :
[[1]]
[[1]][[1]]
[1] -0.2923462
[[1]][[2]]
[1] 0.4891224
[[1]][[3]]
[1] -0.5080176
[[2]]
[[2]][[1]]
[1] 0.3229466
[[2]][[2]]
[1] 0.9511572
[[2]][[3]]
[1] -0.9815504
[[3]]
[[3]][[1]]
[1] -1.160413
[[3]][[2]]
[1] 0.707568
[[3]][[3]]
[1] -1.564874
[[4]]
[[4]][[1]]
[1] -1.13093146 0.06791923 0.65380844 1.01829862 0.47360903 0.68616334 -1.07166155 -1.54018814
[[4]][[2]]
[1] -0.6086043 1.6452418 0.4022282 -0.5474763 -1.7342001 0.6786161 0.5552795 1.3645441
[[4]][[3]]
[1] 0.40215155 -0.65706184 -0.71008434 -1.11484886 -0.69811408 -0.45451101 -0.85574891 -0.79241329 0.31018144 -0.03212242 -1.55192430 -2.19142725
[13] -1.85528112 0.85204097
편집, 정답이 같은 것을 좋아해야합니다 (용서 여기
몇 가지 예를 들어 데이터의 RNG) :part1 <- do.call(Map, c(c, list(list1, list2, list3)))
part2 <- do.call(Map, c(list, list(list1, list2, list3)))
correct <- list(part1[[1]], part1[[2]], part1[[3]], part2[[4]])
correct
[[1]]
[1] 1.80341685 -0.06408827 0.07004951
[[2]]
[1] 0.4389224 -0.1821140 0.2538133
[[3]]
[1] 0.008303713 -1.004631075 1.936738072
[[4]]
[[4]][[1]]
[1] -0.86790931 1.20414809 0.04373068 -0.49097606 1.12826503 -0.76263091 -0.93364770 0.13392904
[[4]][[2]]
[1] -1.0823008 -0.4382813 1.4328709 -0.8961412 0.8350054 1.4855032 -1.3800748 1.4300227
[[4]][[3]]
[1] 0.02126034 0.30640618 0.49420442 0.72107997 0.97666620 -0.48049810 1.22227279 -1.00918452 -0.23290645 -1.27834163 2.55142878 1.07120297
[13] 1.37473759 0.72308135
나는 또한리스트의 요소가 반드시 숫자 아니라는 것을 지적한다 - 그들은 jags()
에서, 예를 들어 모델의 출력을, 수 있습니다.
c
을 사용하면 첫 번째 부분이 (내가 원하는 것과 관련된) 오른쪽으로 가져오고 list
을 사용하면 마지막 부분을 올바르게 가져옵니다. 어떻게하면 두 세계의 장점을 얻을 수 있습니까?
예상 결과는 무엇입니까 – akrun
@akrun 원하는 출력을 표시하도록 편집했습니다. 나는 또한 내 질문에 대답하는 방법을 알아 냈다고 생각한다. (대답 참조). 나는 여기에 게시하고 있는데, 나는 다른 곳에서는이 답을 찾을 수 없었다. – rbatt