我有一个清单,我想有样品。样本数应与向量中的数相对应。问题在于,对于所有列表条目,他仅采用sample_size中的第一个数字。 我希望任何人都能帮助我!
liste_mpg<-plyr::dlply(mtcars,"mpg")
sample_size<-c(2,6,7,1,4,8,9,0,7,9,3,4,6,1,8,4,3,2,6,7,4,6,9,1,4)
test_list<-lapply(liste_mpg, function(x) sample(x,size = sample_size))
答案 0 :(得分:3)
我们可以使用Map
中的base R
根据list
和vector
(或另一个list
)的相应元素进行采样
Map(function(x, y) sample(x, size = y), liste_mpg, sample_size)
对于lapply
,问题在于它循环遍历“ liste_mpg”的元素,而“ sample_size”是完整的向量。相反,可以遍历list
的序列,根据该索引提取相应的元素,然后执行sample
lapply(seq_along(liste_mpg), function(i)
sample(liste_mpg[[i]], size = sample_size[i]))
或等同于map2
中的purrr
map2(liste_mpg, sample_size, ~ sample(.x, size = .y))
答案 1 :(得分:2)
改为使用sapply
,mapply
的多元版本。
mapply(function(x, s) sample(x, s), liste_mpg, sample_size)
或者简单地
mapply(sample, liste_mpg, sample_size)