Как назвать переменные на лету?

Действительно ли возможно создать новые имена переменной на лету?

Я хотел бы считать кадры данных из списка в новые переменные с числами в конце. Что-то как orca1, orca2, orca3...

Если я пробую что-то как

paste("orca",i,sep="")=list_name[[i]]

Я получаю эту ошибку

target of assignment expands to non-language object

Есть ли иначе вокруг этого?

89
задан Bhargav Rao 27 October 2016 в 19:47
поделиться

3 ответа

Используйте assign :

assign(paste("orca", i, sep = ""), list_name[[i]])
111
ответ дан 24 November 2019 в 07:19
поделиться

Мне кажется, что лучше использовать список, чем использовать orca1 , orca2 , и т.д., ... тогда это будет orca [1] , orca [2] , ...

Обычно вы составляете список переменных, различаемых только номер, потому что этот номер будет удобным способом доступа к ним позже.

orca <- list()
orca[1] <- "Hi"
orca[2] <- 59

В противном случае assign - это именно то, что вам нужно.

32
ответ дан 24 November 2019 в 07:19
поделиться

Еще одно сложное решение - присвоить имя элементам списка и прикрепить его:

list_name = list(
    head(iris),
    head(swiss),
    head(airquality)
    )

names(list_name) <- paste("orca", seq_along(list_name), sep="")
attach(list_name)

orca1
#   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          5.1         3.5          1.4         0.2  setosa
# 2          4.9         3.0          1.4         0.2  setosa
# 3          4.7         3.2          1.3         0.2  setosa
# 4          4.6         3.1          1.5         0.2  setosa
# 5          5.0         3.6          1.4         0.2  setosa
# 6          5.4         3.9          1.7         0.4  setosa
0
ответ дан 24 November 2019 в 07:19
поделиться