我从API查询中的端点获取370个列表,每个列表包含19个元素。我试图将其转换为370行,R中包含19列。
当我尝试as.dataframe时,我收到一条错误消息:参数意味着行数不同:1,0 当我尝试lapply(datos,ldply)时,我收到以下错误:结果必须是所有原子或所有数据帧
还尝试了扁平列表帖子。但也得到消息:参数意味着不同的行数:1,0
PS:我检查了之前关于这个主题的类似问题,尝试了答案,但我没有得到我想要的东西
我的数据:
[]
预期输出:370行,19列
答案 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