R paste()函数能否生成数值?

R paste()函数能否生成数值?,r,R,我动态生成5个变量,每个变量包含一个随机值: > i = 1 > > while(i <= 5) { assign(paste("x", i, sep = ""), rnorm(1)) i = i + 1 } > x1 [1] 0.3853609 > x2 [1] 1.626055 > x3 [1] -1.043699 > x4 [1] 0.3449921 > x5 [1] -0.9768416 这不会生成字

我动态生成5个变量,每个变量包含一个随机值:

> i = 1
> 
> while(i <= 5)
 {
   assign(paste("x", i, sep = ""), rnorm(1))
   i = i + 1       
 }
> x1
[1] 0.3853609
> x2
[1] 1.626055
> x3
[1] -1.043699
> x4
[1] 0.3449921
> x5
[1] -0.9768416
这不会生成字符串,但会显示变量
x1
的值。这样,我就可以创建一个循环来显示所有的值


感谢您的帮助。

为什么不将它们放在单个列表对象中呢。列表非常适合使用,因为每个元素都可以容纳任何类型的对象,并且可以具有不同的大小,因此不需要保证函数的返回值生成大小相同的输出。在这个简单的例子中,我将使用
replicate
绘制5个独立的随机正态偏差:

 n <- 5
 x <- replicate( n , rnorm(1) , simplify = FALSE )
[[1]]
[1] 1.820713

[[2]]
[1] -0.2326797

[[3]]
[1] -0.7698173

[[4]]
[1] -0.3954702

[[5]]
[1] -0.5585051

我保证使用5个单独的变量要容易得多。

我猜您正在寻找
get
,但您应该知道,您的整个方法与R语言的概念背道而驰。我向你保证,有更好的方法来实现你的最终目标。你可能需要
x@Roland这个例子是我试图做的一个过于简化的版本。非常感谢您。”“get”工作得很好。我知道循环在R中不太流行,但我需要创建5个不同的变量。我同意@SimonO101,您应该使用更合适的对象类型,如列表。@SavedByJESUS循环在R中非常流行。但是,您应该仅在需要时使用它们(在您的示例中不是这样)。尤其是
while
循环,您几乎不需要。这里不需要
复制
as.list(rnorm(5))
如果您真的需要一个列表,它可以正常工作。@Roland谢谢。我认为当所评估的函数包含
RNG
时,使用
replicate
更好(?!)。我承认这些文档并不清楚我为什么要使用
replicate
。我想这只是在没有像
rnorm
?@imonO101 Compare
set.seed(42)这样的向量化函数的情况下;rnorm(5)
种子集(42);复制(5,rnorm(1))
然后进行基准测试。当您执行类似于
replicate(10,mean(runif(5)))的操作时,差异更为重要。
 n <- 5
 x <- replicate( n , rnorm(1) , simplify = FALSE )
[[1]]
[1] 1.820713

[[2]]
[1] -0.2326797

[[3]]
[1] -0.7698173

[[4]]
[1] -0.3954702

[[5]]
[1] -0.5585051
x[[2]]
[1] -0.2326797