объединение двух списков значений в фрейм данных: аргументы ошибки подразумевают различное количество строк - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть два списка, которые я хотел бы объединить в массив данных. Списки следуют этой основной логике. list1 содержит названия стран, а list2 содержит значения, извлеченные из каждого значения в list1.

list1<-list("A", "C", "B")
list2<-list(c("la la", "po sdfejn kfgndñflgn"), "characther(0)", c("4   5","baby", "yeah")) # note that characther(0) means that there is no data

Результат, который я хочу, таков:

output <- data.frame( V1 = c(rep("A",2), "C", rep("B",3)), V2 = c("la la", "po sdfejn kfgndñflgn", "characther(0)", "4   5", "baby", "yeah"))

Я использовал коды, которые я видел на этой странице, такие как: solution1 <- do.call(rbind, Map(data.frame, a = list1, b= list2)), как я часто это делаю. Этот код работает для примера. Однако при использовании этой формулы для больших списков, над которыми я работаю, появляется следующее сообщение об ошибке:

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = 
TRUE,  : arguments imply differing number of rows: 1, 0

Я пытался unlist(list1), unlist(list1), но это не работает. Если оба списка идентичны, где на самом деле источник проблемы и как я могу ее решить, чтобы получить желаемый результат?

1 Ответ

0 голосов
/ 01 сентября 2018

Решение с использованием tidyverse. dat - конечный результат.

library(tidyverse)

dat <- map2_df(list1, list2, ~data_frame(V1 = .x, V2 = .y))
dat
# # A tibble: 6 x 2
#   V1    V2                  
#   <chr> <chr>               
# 1 A     la la               
# 2 A     po sdfejn kfgndñflgn
# 3 C     characther(0)       
# 4 B     4   5               
# 5 B     baby                
# 6 B     yeah 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...