如何通过向量传递样本大小?
How to pass sample size through a vector?
我有一份清单,我想要样品。样本数量应对应于向量中的数量。问题是他只为所有列表条目取 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))
我们可以使用base R
中的Map
根据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]))
或等同于 purrr
中的 map2
map2(liste_mpg, sample_size, ~ sample(.x, size = .y))
改用 sapply
、mapply
的多元版本。
mapply(function(x, s) sample(x, s), liste_mpg, sample_size)
或者,简单地
mapply(sample, liste_mpg, sample_size)
我有一份清单,我想要样品。样本数量应对应于向量中的数量。问题是他只为所有列表条目取 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))
我们可以使用base R
中的Map
根据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]))
或等同于 purrr
map2
map2(liste_mpg, sample_size, ~ sample(.x, size = .y))
改用 sapply
、mapply
的多元版本。
mapply(function(x, s) sample(x, s), liste_mpg, sample_size)
或者,简单地
mapply(sample, liste_mpg, sample_size)