【问题标题】:vectorize sample function: sample from sample population and create list of sampled vectors向量化样本函数:从样本总体中采样并创建采样向量列表
【发布时间】:2015-10-14 12:54:45
【问题描述】:

我正在尝试对样本进行矢量化:多次从同一总体中抽样,每次不同的样本大小。

我有一个向量a = c(boo = 5, foo=7)b =LETTERS[1:10]

我想创建一个列表,其中的值从 b 中采样,其中采样大小由 a 的值决定。

我试过mapply(sample, b, size = a),但它不起作用...

【问题讨论】:

  • 试试mapply(function(x,y) sample(x, size=y), list(b), a)
  • 好吧,即使我从 b 中采样,mapply(function(x,y) sample(x, y), b, a) 似乎也不起作用。
  • 刷新屏幕:)

标签: r vectorization apply sample


【解决方案1】:
mapply(function(x,y) sample(x, size=y), list(b), a)
[[1]]
[1] "D" "F" "H" "A" "C"

[[2]]
[1] "C" "D" "B" "I" "F" "G" "E"

mapply 获取... 参数中提供的每个对象的第一个元素,并将函数应用于它们。

我们必须使用list(b),以便将其用作一个单独的元素。如果我们只是在那里输入b,函数会尝试b[1],以此类推。

我们可以这样想象每次迭代:

#mapply form
mapply(myfunc, x, y)

#first time
myfunc(x[1], y[1])

#second time
myfunc(x[2], y[2])

#and so on

【讨论】:

  • 我想知道,有没有办法使用向量的名称作为列表项的名称?当然,我可以使用names(list_a_b) <- names(a)
  • 是的,这是最好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 2021-03-30
  • 2012-06-02
  • 2014-06-02
  • 1970-01-01
相关资源
最近更新 更多