小编use*_*737的帖子

为什么runif()不能预测区间最大值?

我回答了在Reddit AskScience上提出的问题,我发现了一些关于功能的奇怪的东西runif().我试图统一采样从1到52的集合.我的第一个想法是使用runif():

as.integer(runif(n, min = 1, max = 52))
Run Code Online (Sandbox Code Playgroud)

但是,我发现该操作从未产生52的值.例如:

length(unique(as.integer(runif(1000000, 1, 52))))
[1] 51
Run Code Online (Sandbox Code Playgroud)

为了我的目的,我转而sample()改为:

sample(52, n, replace = TRUE)
Run Code Online (Sandbox Code Playgroud)

在runif()文档中,它指出:

runif不会生成任何一个极值,除非max = min或max-min与min相比较小,特别是对于默认参数.

我想知道为什么runif()这样做.如果它试图统一生成样本,它似乎应该能够从集合中产生"极值".这是一个功能,为什么?

r

11
推荐指数
1
解决办法
730
查看次数

R get() 函数错误

我正在尝试填充一组矩阵,其中矩阵(对象)名称保存在列表中。我可以使用 get() 返回具有给定名称的对象,但是当我使用 get() 定义要填充的矩阵对象时遇到了函数问题。

#Create list of matrix names:
list.names <- c("m.1")

#Create matrix object
m.1 <- matrix(nrow=2,ncol=2)

#Return matrix m.1 from the list.names using get(). Works great!
get(list.names[1])

#Populate m.1 with some values. Doesn't work.
get(list.names[1]) <- c(1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

所以在最后一行代码中,我收到一个错误:

找不到函数“get<-”

同样,我可以使用以下方法调用 m.1:

eval(as.name(list.name[1]))
Run Code Online (Sandbox Code Playgroud)

但是当我尝试填充矩阵时,R 返回类似的“找不到函数”错误。

有人可以在这里解释我的方法中的错误吗?

编辑/更新:

因此,在我试图简化在这里发布的问题时,我意识到我可能过于简化了我想要做的事情。

所以,事实上,我试图在一组矩阵中​​填充元素。矩阵的名称包含在 list.names 对象中。我使用嵌套的 for() 循环来填充矩阵中的每个元素。

所以,事实上,我的问题会更准确地表述为:

get(list.names[1])[1,1] <- some_value
Run Code Online (Sandbox Code Playgroud)

一些回复建议我根据我的原始帖子使用分配,但鉴于我试图在对象中而不是整个对象中“分配”一个元素,这种方法将不起作用。

对困惑感到抱歉。

r

4
推荐指数
1
解决办法
9037
查看次数

标签 统计

r ×2