R соединяет строковые и динамические переменные - PullRequest
0 голосов
/ 01 января 2019

у некоторых других языков есть это:

i=1
x&i=3

Тогда вы получите переменную x1=3

Как реализовать это в R?

пожалуйста, не используйте assign(paste0('x',1),3).Потому что я хочу повторить i, например:

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

И я хочу x1, x2 ... xn.assign(paste) генерирует переменные только один раз и не имеет функций добавления.

Так что грамматика x&i является основной проблемой.

Спасибо за помощь.

1 Ответ

0 голосов
/ 01 января 2019

Попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...