Замена элементов списка элементами из другого списка на основе имени - PullRequest
2 голосов
/ 09 января 2020

Я пытаюсь использовать именованный индекс для замены некоторых элементов списка.

У меня есть три списка:

  • Superset
  • Подмножество
  • SubsetNames

Моя цель - заменить старые элементы в Superset на соответствующие элементы из Subset, где Name (Subset) == Name (Superset).

Пример кода (Отредактировано для корректности):

# Setting things up
Superset <- list(1, 2, 3, 4)
names(Superset) <- c("a", "b", "c", "d")

Subset <- list(5, 6)
names(Subset) <- c("b", "c") # or any names from Superset

SubsetNames <- as.list(names(Subset))

Я пробовал такие вещи:

lapply(SubsetNames, FUN=function(x) Superset[[x]] <- Subset[[x]])

И:

Superset[SubsetNames] <- Subset

Я даже пытался построить фор- oop со счетчиком, однако это не рабочее решение в моем сценарии.

В действительности, Superset представляет собой список фреймов данных, каждый из которых имеет почти 90 тыс. точек данных в 117 столбцах. Некоторые из этих фреймов данных требуют некоторой настройки. У меня есть код, который успешно извлекает список нуждающихся в настройке и настраивает их ... теперь мне просто нужно вернуть их обратно.

Ваша помощь очень ценится! Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 января 2020

Мы можем использовать names из «Подмножества» для подмножества «Суперсета» и присвоить ему значения «Подмножества»

Superset[names(Subset)] <- Subset
Superset
#$a
#[1] 1

#$b
#[1] 5

#$c
#[1] 6

#$d
#[1] 4

Создается list создание неисправна. Это будет as.list

Superset <- as.list(1:4)

. Он вернет list из length 4 вместо length 1 с list(1:4)

1 голос
/ 09 января 2020

Если вы хотите изменить для каждого значения в Подмножестве, вы можете просто сделать

modifyList(Superset, Subset)

или если вы просто обновляете меньший набор значений из подмножества

modifyList(Superset, Subset[SubsetNames])
...