代码之家  ›  专栏  ›  技术社区  ›  Adrian del rio rodriguez

将两个值列表合并到一个数据帧中:错误参数意味着行数不同

  •  -2
  • Adrian del rio rodriguez  · 技术社区  · 6 年前

    我有两个列表,我想合并成一个数据帧。清单遵循这一基本逻辑。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 回复  |  直到 6 年前
        1
  •  1
  •   www    6 年前

    使用 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