其他一些语言具有以下功能:
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
是核心问题。
感谢帮助。
答案 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
或使用assign
和get
可以像上面这样完成:
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