#r
#r
Вопрос:
У меня есть набор данных, который генерируется с помощью GET
метода (вызова API).
dataset<-GET('www.ttttyyyyzzzz.com')
contents <- content(dataset)
Я извлекаю данные с помощью следующей команды
contents<-contents$response$data
. Это создаст список. Список списка списка.
Вот как список выглядит в RStudio.
С точки зрения рассмотрения этого как фрейма данных, у меня есть 8 строк и 42 столбца. Что я действительно хочу сделать, так это создать 43-й столбец под названием «Год» и добавить его к каждому из 8 высокоуровневых элементов. Таким образом, список теперь будет «Списком 43» для всех 8 моих элементов.
@Ronak запросил dput — я создал макет ради этого упражнения. С помощью следующей команды я хочу добавить 4-й элемент в мой основной список под названием ‘p’ с общим значением 25 во всех списках.
structure(list(m = 1, n = 2, o = 3, structure(list(m = 3, n = 4,
o = 5), .Names = c("m", "n", "o")), structure(list(m = 6,
n = 9, o = 8), .Names = c("m", "n", "o"))), .Names = c("m",
"n", "o", "", ""))
Комментарии:
1. Где в вашем наборе данных отображается год?
2. Это не так. Это то, что я хочу добавить. Я хочу сделать это списком из 43.
3.
structure(list(m = 1, n = 2, o = 3, structure(list(m = 3, n = 4, o = 5), .Names = c("m", "n", "o")), structure(list(m = 6, n = 9, o = 8), .Names = c("m", "n", "o"))), .Names = c("m", "n", "o", "", ""))
Вот так. Я хочу добавить 4-й элемент с именем p, например, со значением 25 для всех списков4. К сожалению, нет. Это создало вложенный список внутри всех списков.
5. Работает! Легенда! Намасте!
Ответ №1:
Если я правильно понял цель, мы можем использовать:
plyr::llply(contents,function(x) rlist::list.append(x,p=25))
Комментарии:
1. Это ИДЕАЛЬНО! Но как я могу сделать это именованным атрибутом. Я хочу назвать это «Year». Когда вы говорите ‘p = 25’, он не назвал элемент как p
2. @CuriousBeing не уверен, но давайте посмотрим. Хотя замена
p
наYear
у меня работает, хотя и не является атрибутом.3.Это то, что вам нужно?
plyr::llply(res,function(x){ attr(x,"Year")<-x["Year"] x})
res
является результатом выше иp
был переименован вYear
.
Ответ №2:
Итак, мы можем добавить именованный элемент списка, выполнив
lapply(lst, function(x) c(x, p = 25))
#$m
# p
# 1 25
#$n
# p
# 2 25
#$o
# p
# 3 25
#[[4]]
#[[4]]$m
#[1] 3
#[[4]]$n
#[1] 4
#[[4]]$o
#[1] 5
#[[4]]$p
#[1] 25
#...
#...
Или с помощью purrr::map
purrr::map(lst, ~ c(., p = 25))
данные
lst <- structure(list(m = 1, n = 2, o = 3, structure(list(m = 3, n = 4, o =
5), .Names = c("m", "n", "o")), structure(list(m = 6, n = 9, o = 8), .Names =
c("m", "n", "o"))), .Names = c("m", "n", "o", "", ""))
Ответ №3:
Вот вариант с base R
Map(c, lst1, p = 25)
#$m
# p
# 1 25
#$n
# p
# 2 25
#$o
# p
# 3 25
#[[4]]
#[[4]]$m
#[1] 3
#[[4]]$n
#[1] 4
#[[4]]$o
#[1] 5
#[[4]]$p
#[1] 25
#...
данные
lst1 <- structure(list(m = 1, n = 2, o = 3, structure(list(m = 3, n = 4, o =
5), .Names = c("m", "n", "o")), structure(list(m = 6, n = 9, o = 8), .Names =
c("m", "n", "o"))), .Names = c("m", "n", "o", "", ""))