Ответ 1
Поверните f
в список один, а затем соедините его:
c(list(f=1:5), lst)
Это ужасно базовое, но я не могу понять его.
Предположим, что у меня есть список переменных:
lst <- list(a=1:4, b=rep('k', 5), c=3)
Если я хочу добавить к нему вектор с указанным именем, я должен сделать это:
c(f=1:5, lst)
Но вместо создания записи с именем "f", содержащей 1 2 3 4 5, она создает пять записей (f1 - f5), содержащих одно из чисел.
Как я могу подавить это поведение?
Я знаю, что могу использовать
lst$f <- 1:5
но я хотел бы добавить список в вызов функции...
Поверните f
в список один, а затем соедините его:
c(list(f=1:5), lst)
Вот простая функция добавления одного (или более) элемента в список:
lappend <- function (lst, ...){
lst <- c(lst, list(...))
return(lst)
}
> a <- list()
> a
list()
> lappend(a,c(1,2,3))
[[1]]
[1] 1 2 3
> lappend(a, c(4,5,6), c(7,8,9))
[[1]]
[1] 4 5 6
[[2]]
[1] 7 8 9
Надеюсь, что это поможет! Bye.
Вы можете просто сделать:
lst[[key]] <- any_object
(обратите внимание на двойные квадратные скобки [[]]
)
any_object
может, конечно, быть вектором.
Этот метод имеет то преимущество, что его можно использовать, даже если точное значение key
хранится в переменной, и вы не знаете его заранее, или если оно повторяется в цикле for
, например
count <- list()
for (k in c("boys","girls","other")) {
count[[k]] <- sum(data == k)
}
Более универсальное решение с добавлением:
append(lst, list(f=1:5), after=0)# after - position to append