Привязать первый элемент вложенного списка к последующим элементам вложенного списка - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть вложенный список, и я хотел бы связать первый элемент каждого списка с остальными элементами этого вложенного списка.(Сделайте это для каждого списка во всем наборе)

Вот первые два списка более высокого уровня.Цель состоит в том, чтобы вывести фрейм данных с двумя столбцами.Столбец 1 является первой строкой, а столбец 2 - последующими.

Упрощенная версия:

list(c("Location1", 
       "Location1_Bid1", 
       "Location1_Bid2", 
       "Location1_Bid3"), 
     c("Location2", 
     "Location2_Bid1", 
     "Location2_Bid2", 
     "Location2_Bid3"),
     c("Location3", 
     "Location3_Bid1", 
     "Location3_Bid2", 
     "Location3_Bid3",
     "Location3_Bid4")
     , c("Location4", 
     "Location4_Bid1", 
     "Location4_Bid2"))

Например:

Location        |  Bid
"Location1"     | "Location1_Bid1"
"Location1"     | "Location1_Bid2"
"Location1"     | "Location1_Bid3"
"Location2"     | "Location2_Bid1"
"Location2"     | "Location2_Bid2"
"Location2"     | "Location2_Bid3"
"Location3"     | "Location3_Bid1"
"Location3"     | "Location3_Bid2"
"Location3"     | "Location3_Bid3"
"Location3"     | "Location3_Bid4"
"Location4"     | "Location4_Bid1"
"Location4"     | "Location4_Bid2"

1 Ответ

0 голосов
/ 21 февраля 2019

Напишите функцию, которая делает то, что вы хотите, и используйте lapply, чтобы сделать это для каждого элемента списка:

foo = function(x) cbind(x[1], x[-1])
result = lapply(your_list, foo)

Назовите ваш простой пример "simple":

lapply(simple, foo)
# [[1]]
#      [,1]        [,2]            
# [1,] "Location1" "Location1_Bid1"
# [2,] "Location1" "Location1_Bid2"
# [3,] "Location1" "Location1_Bid3"
# 
# [[2]]
#      [,1]        [,2]            
# [1,] "Location2" "Location2_Bid1"
# [2,] "Location2" "Location2_Bid2"
# [3,] "Location2" "Location2_Bid3"
# 
# [[3]]
#      [,1]        [,2]            
# [1,] "Location3" "Location3_Bid1"
# [2,] "Location3" "Location3_Bid2"
# [3,] "Location3" "Location3_Bid3"
# [4,] "Location3" "Location3_Bid4"
# 
# [[4]]
#      [,1]        [,2]            
# [1,] "Location4" "Location4_Bid1"
# [2,] "Location4" "Location4_Bid2"

Это матрицы, а не кадры данных.Вы можете использовать cbind.data.frame вместо cbind, если хотите, чтобы кадры данных были удалены.Вы также можете добавить имена столбцов, как в примере вывода, например

foo = function(x) cbind.data.frame(Location = x[1], Bid = x[-1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...