R连接字符串和动态变量

时间:2019-01-01 14:38:51

标签: r

其他一些语言具有以下功能:

i=1
x&i=3

然后您将获得一个变量x1=3

如何在R中实现这一目标?

请不要使用assign(paste0('x',1),3)。 因为我想迭代我,例如:

x1=c()
for(i in 1:100){
x1=c(x1,2*i)}

我想要x1,x2 ... xn。 assign(paste)仅生成一次变量,没有添加函数。

因此,语法x&i是核心问题。

感谢帮助。

1 个答案:

答案 0 :(得分:3)

尝试一下:

e <- .GlobalEnv
i <- 1
xi.name <- paste0("x", i)

# assign
e[[xi.name]] <- 3

# add
e[[xi.name]] <- e[[xi.name]] + 1

# display
e[[xi.name]]
## [1] 4

或使用assignget可以像上面这样完成:

i <- 1
xi.name <- paste0("x", i)

# assign
assign(xi.name, 3)

# add
assign(xi.name, get(xi.name) + 1)

# display
get(xi.name)
## [1] 4

请注意,通常不会生成动态变量,而是将其放入列表中。

L <- list()
i <- 1
xi.name <- paste0("x", i)

# assign
L[[xi.name]] <- 3

# add
L[[xi.name]] <- L[[xi.name]] + 1

# display
L[[xi.name]]
## [1] 4

或简单地:

L <- list()
i <- 1

# assign
L[[i]] <- 3

# add
L[[i]] <- L[[i]] + 1

# display
L[[i]]
## [1] 4

注意

e <- .GlobalEnv
i <- 1
xi.name <- paste0("x", i)
x1 <- 3

e[[xi.name]] <- c(e[[xi.name]], 99)
x1
## [1] 3 99

e <- .GlobalEnv
i <- 1
xi.name <- paste0("x", i)
x1 <- 3
assign(xi.name, c(get(xi.name), 99))
x1
## [1] 3 99