通过 eval 或类似方式影响变量
Affecting variable through eval or similar
我知道如果我有像 a = "var.name"
这样存储的变量名称,我可以通过 eval(as.symbol(a))
或 get(a)
调用它 var.name
,但我想要不仅可以调用变量,还可以对其进行更改。示例:
names = c("X1","X2")
for(i in names){
assign(i, cbind(replicate(2,rnorm(3))) #Just creating a 3x2 matrix with dummy data
###
在 ### 我想对变量进行更改,特别是将其列名称更改为“a”和“b”。
我尝试了 colnames(get(i)) = c("a","b")
或 colnames(eval(as.symbol(i))) = c("a","b")
,但它们 return 错误,例如 could not find function "eval<-"
一个选项可以是在第一步中创建矩阵,然后在第二步中命名并分配一个新名称。
names = c("X1","X2")
for(i in names){
x <- cbind(replicate(2,rnorm(3)))
assign(i, provideDimnames(x))
}
#--------------
> X1
A B
A -0.59174062 1.8527780
B -0.53088643 -3.2713544
C -0.09330006 -0.5977568
另一种选择是在创建矩阵时分配 dimnames。
for (i in names) {
x <- matrix(replicate(2, rnorm(3)),
ncol = 2,
dimnames = list(a = c(LETTERS[1:3]), b = c(LETTERS[1:2])))
assign(i, x)
}
#-------------------
> X1
b
a A B
A -0.2313692 -0.93161762
B -0.9666849 0.06164904
C 1.5614446 -0.09391062
我知道如果我有像 a = "var.name"
这样存储的变量名称,我可以通过 eval(as.symbol(a))
或 get(a)
调用它 var.name
,但我想要不仅可以调用变量,还可以对其进行更改。示例:
names = c("X1","X2")
for(i in names){
assign(i, cbind(replicate(2,rnorm(3))) #Just creating a 3x2 matrix with dummy data
###
在 ### 我想对变量进行更改,特别是将其列名称更改为“a”和“b”。
我尝试了 colnames(get(i)) = c("a","b")
或 colnames(eval(as.symbol(i))) = c("a","b")
,但它们 return 错误,例如 could not find function "eval<-"
一个选项可以是在第一步中创建矩阵,然后在第二步中命名并分配一个新名称。
names = c("X1","X2")
for(i in names){
x <- cbind(replicate(2,rnorm(3)))
assign(i, provideDimnames(x))
}
#--------------
> X1
A B
A -0.59174062 1.8527780
B -0.53088643 -3.2713544
C -0.09330006 -0.5977568
另一种选择是在创建矩阵时分配 dimnames。
for (i in names) {
x <- matrix(replicate(2, rnorm(3)),
ncol = 2,
dimnames = list(a = c(LETTERS[1:3]), b = c(LETTERS[1:2])))
assign(i, x)
}
#-------------------
> X1
b
a A B
A -0.2313692 -0.93161762
B -0.9666849 0.06164904
C 1.5614446 -0.09391062