Considering the following routine:
x <- 1:10
for (i in 1:length(x)) {
## Nome da variável:
nomevar <- paste0("Var_", i)
var <- x[i] + 2
assign(nomevar, var)
print(nomevar) # aqui esta minha duvida
}
Considering the following routine:
x <- 1:10
for (i in 1:length(x)) {
## Nome da variável:
nomevar <- paste0("Var_", i)
var <- x[i] + 2
assign(nomevar, var)
print(nomevar) # aqui esta minha duvida
}
You can replace your last line with the following snippet:
print(eval(parse(text = nomevar)))
The function parse
transforms the string that is the contents of the variable nomevar
into an expression of R. The function eval
executes the expression.
> x<-1:10
>
> for (i in 1:length(x)){
+ ## Nome da variável:
+ nomevar<-paste0("Var_",i)
+ var<- x[i] + 2
+ assign(nomevar,var)
+ print(eval(parse(text = nomevar)))
+ }
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
Note that this usage is not very common or recommended. There should be better ways to get the same result probably using lists or environments.
See how I would loop your way using more common structures in R.
x<-1:10
results <- list()
for (i in 1:length(x)){
## Nome da variável:
nomevar<-paste0("Var_",i)
results[[nomevar]]<- x[i] + 2
print(results[[nomevar]])
}
You can also use the get
function:
for (i in 1:length(x)) {
## Nome da variável:
nomevar <- paste0("Var_", i)
var <- x[i] + 2
assign(nomevar, var)
print(get(nomevar))
}
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12