【发布时间】:2020-02-19 05:18:28
【问题描述】:
我通过以下方式生成了一堆变量:
max_no=10
list2env(setNames(as.list(c(0.2, 0.25,0.15, 0.1, 0.1, 0.05, 0.03, 0.06, 0.03, 0.02, 0.01)), paste0("proportion", 0:max_no)), envir = .GlobalEnv)
这些生成对象,如“proportion0”、“proportion1”、...、“proportion10”,其值为 0.2、0.25....等。
我想将这些比例值作为概率向量插入到示例函数中,如下所示:
sample(seq.int(0, max_no, 1), size=10000, replace=TRUE, prob=c(paste0("proportion", 0:max_no)))
但我收到错误消息:sample.int(length(x), size, replace, prob) 中的错误:概率向量中的 NA
输入概率的简单方法是什么?
【问题讨论】:
-
为什么要将所有这些比例放入不同的变量中?这使得它很难工作。为什么不将它们保存在一个可以传递给
prob=的简单向量中?只需probs <- c(0.2, 0.25,0.15, 0.1, 0.1, 0.05, 0.03, 0.06, 0.03, 0.02, 0.01)和sample(seq.int(0, max_no, 1), size=10000, replace=TRUE, prob=probs)。您可以通过probs[1]、probs[2]等获取单个值 -
我正在运行一个需要动态创建变量的模拟。我选择的选项在创建和更改概率方面看起来最简单..
-
我强烈建议不要这样做。使用
proportion[1]、proportion[2]等而不是proportion0、proportion1等会更容易做事。名称中带有索引的变量表明你做事的速度并不快“R-like”方式只会让自己变得更难。
标签: r