我正在尝试将我的代码从base-r for-loops更改为purrr。我想从一个有k个元素的列表的整数向量中访问可变数量的元素。
我有一个向量
set.seed(1)
subset_from<- sample(c(-20,2), size= 60, replace =T)
我有一个名为“chosen_rounds”的列表,其中有14个元素,每个元素都是一个可变长度的整数向量。
k <- 14 # number of elements in the list chosen_rounds
k_small <- sample(sample(1:15, k, replace = T))
chosen_rounds <- map(k_small, sample, x=1:30, replace=T)
现在,我想访问我的向量“subset_from”的元素“chosen_rounds”,并计算每个列表元素的平均值,即我想要一个有14个元素的向量,每个元素都是一个子集(加权子集,即subset_from的一些元素可以在向量子集from的这个子集中出现多次。
对于第一个示例,这将是:
mean(subset_from[chosen_rounds[[1]]])
也就是-12
我曾经尝试过lmap、imap或map 2,但所有抛出的错误或返回的列表都将所有元素= NULL。
这个代码有效
chosen_rounds[1] %>% unlist() %>% subset_from[.] %>% mean
但是我还没有想出如何推广它,这样我就不必专门索引chosen_rounds,而是自动迭代列表的每个元素。
非常感谢你给我的任何关于如何迭代每个列表元素的想法。
1条答案
按热度按时间9wbgstp71#
我找到解决办法了它在命名chosen_rounds向量上绕了一圈。