1

我动态生成 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

R中是否有任何函数可以让我动态显示每个变量的值。我的意思是这样的功能:

> paste("x", 1, sep = "")
[1] "x1"

这不会产生字符串,但会显示变量的值x1。这样,我可以创建一个循环来显示所有值。

谢谢你的帮助。

4

1 回答 1

2

为什么不将它们放在一个列表对象中。列表非常适合使用,因为每个元素都可以包含任何类型的对象并且可以具有不同的大小,因此您不需要保证函数的返回值会产生相同大小的输出。在这种简单的情况下,我会使用replicate5 个独立的随机正态偏差来绘制:

 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

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

于 2013-08-09T09:37:58.377 回答