R:动态创建变量
我想在创建变量序列v1,v2在运行程序时。 我为一个这样的变量运行以下代码: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
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
,但适当的问题总是“您试图解决什么问题?”——换句话说,我想知道你是如何进入这样的情况的,你有一个变量名存储在第一位,是否有更好的方法。。。