извлекать имена объектов из списка

У меня есть список объектов. Как получить имя одного объекта из списка? Как в:

LIST <- list(A=1:5, B=1:10) LIST$A some.way.cool.function(LIST$A) #function I hope exists "A" #yay! it has returned what I want 

имена (LIST) неверны, потому что они возвращают «A» и «B».

Только для контекста я рисую серию кадров данных, которые хранятся в списке. Когда я прихожу к каждому data.frame, я хочу включить имя data.frame в качестве заголовка. Таким образом, ответ имен (LIST) [1] неверен.

EDIT: я добавил код для большего контекста проблемы

 x <- c("yes", "no", "maybe", "no", "no", "yes") y <- c("red", "blue", "green", "green", "orange") list.xy <- list(x=x, y=y) WORD.C <- function(WORDS){ require(wordcloud) L2 <- lapply(WORDS, function(x) as.data.frame(table(x), stringsAsFactors = FALSE)) FUN <- function(X){ windows() wordcloud(X[, 1], X[, 2], min.freq=1) mtext(as.character(names(X)), 3, padj=-4.5, col="red") #what I'm trying that isn't working } lapply(L2, FUN) } WORD.C(list.xy) 

Если это работает, имена x и y будут красными в верхней части обоих графиков

Создание небольшой настройки для внутренней функции и использование lapply по индексу вместо фактического списка само по себе делает это, делая то, что вы хотите

 x <- c("yes", "no", "maybe", "no", "no", "yes") y <- c("red", "blue", "green", "green", "orange") list.xy <- list(x=x, y=y) WORD.C <- function(WORDS){ require(wordcloud) L2 <- lapply(WORDS, function(x) as.data.frame(table(x), stringsAsFactors = FALSE)) # Takes a dataframe and the text you want to display FUN <- function(X, text){ windows() wordcloud(X[, 1], X[, 2], min.freq=1) mtext(text, 3, padj=-4.5, col="red") #what I'm trying that isn't working } # Now creates the sequence 1,...,length(L2) # Loops over that and then create an anonymous function # to send in the information you want to use. lapply(seq_along(L2), function(i){FUN(L2[[i]], names(L2)[i])}) # Since you asked about loops # you could use i in seq_along(L2) # instead of 1:length(L2) if you wanted to #for(i in 1:length(L2)){ # FUN(L2[[i]], names(L2)[i]) #} } WORD.C(list.xy) 

Да, он существует 🙂 Просто используйте

 > names(LIST) [1] "A" "B" 

Очевидно, что имена первого элемента просто

 > names(LIST)[1] [1] "A" 
  • Перекодирование переменных с помощью R
  • Как найти разницу в стоимости в каждых двух последовательных строках в R?
  • cbind a df с пустым df (cbind.fill?)
  • Лучшее объяснение того, когда использовать импорт / зависимость
  • Как вы конвертируете даты / время из одного часового пояса в другой в R?
  • Как выбрать строку с максимальным значением в каждой группе
  • Создайте последовательность, такую ​​как 112123123412345
  • Как изменить языковые настройки в R
  • Есть ли такой «colsd» в R?
  • Загрузка нескольких файлов одновременно?
  • как получить значение, когда имя переменной передается как строка
  • Interesting Posts
    Давайте будем гением компьютера.