Возникли проблемы при добавлении строки в конец вектора, который находится в списке - PullRequest
3 голосов
/ 26 января 2020
g = list(vegetable ="carrot", food=c("steak", "eggs"), numbers = c(4,2,1,7))

Интересно, как добавить еще один элемент в еду? Пробовал делать еду <- спаржа, но это не сработало </p>

Ответы [ 4 ]

4 голосов
/ 26 января 2020
g[["food"]] <- c(g[["food"]], "asparagus")
2 голосов
/ 26 января 2020

Мы можем использовать map_if

library(purrr)
map_if(g, names(g) == 'food', ~ c(.x, 'asparagus'))
#$vegetable
#[1] "carrot"

#$food
#[1] "steak"     "eggs"      "asparagus"

#$numbers
#[1] 4 2 1 7

Или с modifyList из base R

modifyList(g, list(food = c(g[['food']], 'asparagus')))
#$vegetable
#[1] "carrot"

#$food
#[1] "steak"     "eggs"      "asparagus"

#$numbers
#[1] 4 2 1 7
2 голосов
/ 26 января 2020

Один из вариантов использования purrr может быть:

modify_in(g, "food", ~ c(., "asparagus"))

$vegetable
[1] "carrot"

$food
[1] "steak"     "eggs"      "asparagus"

$numbers
[1] 4 2 1 7
0 голосов
/ 26 января 2020

Базовый раствор R

g <- within(g,food <- c(food,"asparagus"))

или

g <- within(g,food <- append(food,"asparagus"))

такой, что

> g
$vegetable
[1] "carrot"

$food
[1] "steak"     "eggs"      "asparagus"

$numbers
[1] 4 2 1 7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...