У меня есть список вроде:
mylist <- list(a = 1, b = list(A = 1, B = 2), c = list(C = 1, D = 3))
есть ли способ (без петель) определить положение элементов, например. если я хочу заменить значения «C» на 5, и не имеет значения, где находится элемент «C», могу ли я сделать что-то вроде:
Aindex <- find_index("A", mylist)
mylist[Aindex] <- 5
Я пробовал grepl
, и в текущем примере будет работать следующее:
mylist[grepl("C", mylist)][[1]][["C"]]
но это требует предположения об уровне вложенности.
Причина, по которой я спрашиваю, заключается в том, что у меня есть глубокий список значений параметров и именованный вектор значений замены, и я хочу сделать что-то вроде
replacements <- c(a = 1, C = 5)
for(i in names(replacements)){
indx <- find_index(i, mylist)
mylist[indx] <- replacements[i]
}
это адаптация к моему предыдущему вопросу: обновить узел (неизвестной глубины), используя xpath в R?, используя списки R вместо XML