R:动态创建变量

R:动态创建变量,r,R,我想在创建变量序列v1,v2在运行程序时。 我为一个这样的变量运行以下代码: FinishAt <- 1 Sequence <- 1:FinishAt AsCharacterSequence <- as.character(Sequence) aa <- paste("v", AsCharacterSequence[1], sep="", collapse="") # [1] "v1" bb <- eval(substitute(variable), list(v

我想在创建变量序列v1,v2在运行程序时。 我为一个这样的变量运行以下代码:

FinishAt <- 1
Sequence <- 1:FinishAt
AsCharacterSequence <- as.character(Sequence)

aa <- paste("v", AsCharacterSequence[1], sep="", collapse="") # [1] "v1"
bb <- eval(substitute(variable), list(variable=as.name(a))) # v1

FinishAt您可以使用
assign
动态定义变量。例如,下面生成三个变量v1。。。v3:

var_names <- paste("v", 1:3, sep="")
for (v in var_names) assign(v, runif(1))
还要注意的是,
assign
get
都有一个可选的
envir
参数,它使您能够使这些变量远离代码的其余部分


我不确定,但我认为如果有很多变量,赋值/获取可能比列表更快,至少如果您想查找一些值。

您可以使用
赋值来动态定义变量。例如,下面生成三个变量v1。。。v3:

var_names <- paste("v", 1:3, sep="")
for (v in var_names) assign(v, runif(1))
还要注意的是,
assign
get
都有一个可选的
envir
参数,它使您能够使这些变量远离代码的其余部分


我不确定,但我认为如果有很多变量,赋值/获取可能比列表快,至少如果你想查找一些值的话。

你为什么要这样做而不是使用数组?@nico:因为我想控制变量的名称。@Karsten W:v1还不是使用赋值的变量。唯一存在的变量是aa和bb。您的代码似乎不完整。什么是
AsCharacterSequence
,什么是
a
?也许你应该看看
?分配
,你最好使用一个列表和索引名称。请参阅常见问题:@jbaums:@Maiasaura所指的常见问题说明,将变量序列作为列表处理,而不是使用通过处理变量名的宏样式方法,更具R风格。“如何处理存储为字符串的任意变量名”的答案当然是
assign
/
get
,但适当的问题总是“您试图解决什么问题?”——换句话说,我想知道你是如何进入这样一种情况的:你一开始就以这种方式存储了一个变量名,是否有更好的方法……你为什么要这样做而不是使用数组?@nico:因为我想控制变量名。@Karsten W:v1还不是一个使用赋值的变量。唯一存在的变量是aa和bb。您的代码似乎不完整。什么是
AsCharacterSequence
,什么是
a
?也许你应该看看
?分配
,你最好使用一个列表和索引名称。请参阅常见问题:@jbaums:@Maiasaura所指的常见问题说明,将变量序列作为列表处理,而不是使用通过处理变量名的宏样式方法,更具R风格。“如何处理存储为字符串的任意变量名”的答案当然是
assign
/
get
,但适当的问题总是“您试图解决什么问题?”——换句话说,我想知道你是如何进入这样的情况的,你有一个变量名存储在第一位,是否有更好的方法。。。