Доступ к элементам списка по имени в R с использованием другой переменной - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь получить доступ к элементу в списке, используя имя, сохраненное в другой переменной, однако я получаю сообщение об ошибке, что объект не существует. Любое решение для этого? Я потратил два дня на поиски одного:)

Рабочий пример:

# create a list
master <- list(1, 2, 3, 4)
names(master) <- c("d", "a1", "b", "c")  #4123
master[["a2"]] <- 25

# set up the problem
callname <- "a2"

callname <- paste("master", callname, sep="$")

# Try to call up the value based on the name:
callvalue <- get(callname)
# This gives error: "Error in get(callname) : object 'master$a2' not found" 

# However, calling the object directly prints the value correctly:
master$a2
# [1] 25

На самом деле у меня есть список из 130 фреймов данных, принадлежащих десяти группам (имена - group01.1 , группа 01.2, группа 02.1 и др. c). Мне нужно bind_rows () все group01.X в один фрейм данных, group02.X в другой, и так далее. Я бы предпочел сделать это программно, а не по одному.

Заранее спасибо !!!

1 Ответ

0 голосов
/ 10 января 2020

Мы можем извлечь объект list с помощью get, а затем использовать [[

callname <- "a2"
get("master")[[callname]]
#[1] 25

Или, если мы хотим использовать eval, использовать всю строку (не рекомендуется)

callname <- paste("master", callname, sep="$")
eval(parse(text = callname))
#[1] 25
...