paste()函数可以生成数值吗?

时间:2013-08-09 08:46:06

标签: 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

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

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

为什么不在单个列表对象中创建它们。列表非常适合使用,因为每个元素都可以容纳任何类型的对象,并且可以具有不同的大小,因此您不需要保证函数的返回值产生相同大小的输出。在这个简单的例子中,我会使用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

您可以通过使用[[进行子集化来访问每个元素,例如得到第二个结果:

x[[2]]
[1] -0.2326797

我保证使用5个单独的变量更容易。