数据框列表

时间:2017-05-05 19:04:53

标签: r list dataframe plyr

我从API查询中的端点获取370个列表,每个列表包含19个元素。我试图将其转换为370行,R中包含19列。

当我尝试as.dataframe时,我收到一条错误消息:参数意味着行数不同:1,0 当我尝试lapply(datos,ldply)时,我收到以下错误:结果必须是所有原子或所有数据帧

还尝试了扁平列表帖子。但也得到消息:参数意味着不同的行数:1,0

PS:我检查了之前关于这个主题的类似问题,尝试了答案,但我没有得到我想要的东西

我的数据:

[enter image description here]

预期输出:370行,19列

1 个答案:

答案 0 :(得分:1)

考虑过滤掉NULL实体,这是将列表元素转换为数据帧的挑战。

数据 (重新创建屏幕截图的可见部分)

inner <- 
  list(
    loandId = 2,
    websiteLoanId = 2,
    loanName = "Nottingham Student Accodomodation Development Project",
    amount = 1500000.0,
    principalRemaining = "0.00",
    firstDrawDate = "2013-04-16T07:36.08.000z",
    status = "repaid",
    sector = NULL,
    category = "development",
    holdings = list(1,2,3,4,5),
    aftermarketForSale = list("a", "b", "c", "d", "e")
  )

datos= list(loans = lapply(seq(370), function(i) inner))

数据框构建

# FILTER OUT NULLs
datos$loans <- lapply(datos$loans, function(item) 
  Filter(function(i) length(i) == 1, item)
)

# IF ALL ELEMENTS ARE THE SAME (I.E., NULL DROPS SAME ITEM)
loansdf <- do.call(rbind, lapply(datos$loans, data.frame))

# IF NULL DROPS ABOVE ARE NOT SAME, USE BELOW PACKAGES FOR RBINDING METHOS
loansdf <- plyr::rbind.fill(datos$loans)
loansdf <- dplyr::bind_rows(datos$loans)
loansdf <- data.table::rbindlist(datos$loans)

<强>输出

loansdf
#    loandId websiteLoanId                                              loanName  amount principalRemaining            firstDrawDate status
# 1         2             2 Nottingham Student Accodomodation Development Project 1500000               0.00 2013-04-16T07:36.08.000z repaid
# 2         2             2 Nottingham Student Accodomodation Development Project 1500000               0.00 2013-04-16T07:36.08.000z repaid
# 3         2             2 Nottingham Student Accodomodation Development Project 1500000               0.00 2013-04-16T07:36.08.000z repaid
# 4         2             2 Nottingham Student Accodomodation Development Project 1500000               0.00 2013-04-16T07:36.08.000z repaid
# 5         2             2 Nottingham Student Accodomodation Development Project 1500000               0.00 2013-04-16T07:36.08.000z repaid
# 6         2             2 Nottingham Student Accodomodation Development Project 1500000               0.00 2013-04-16T07:36.08.000z repaid
# 7         2             2 Nottingham Student Accodomodation Development Project 1500000               0.00 2013-04-16T07:36.08.000z repaid
# 8         2             2 Nottingham Student Accodomodation Development Project 1500000               0.00 2013-04-16T07:36.08.000z repaid