我动态生成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
的值。通过这种方式,我可以创建一个循环来显示所有值。
感谢您的帮助。
答案 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个单独的变量更容易。