使用R的Tabulizer提取PDF表格转Data Frame遇行数量不一致问题求助
解决Tabulizer提取PDF表格转Data Frame的行数列数不匹配问题
核心思路
通过统一所有子列表的长度,用NA填充缺失部分,再转换为Data Frame,避免因行列数不一致报错。
具体步骤与代码
提取第二页的表格列表
tables_page2 <- extract_tables(proform, pages = 2)确定统一长度
找到所有子列表中最长的元素个数,作为后续填充的目标长度:max_len <- max(sapply(tables_page2, length))填充NA并转换为Data Frame
遍历每个子列表,将其长度补至max_len(缺失位置用NA填充),再合并为Data Frame:# 填充NA至统一长度 filled_tables <- lapply(tables_page2, function(x) { length(x) <- max_len x }) # 转换为Data Frame df_page2 <- as.data.frame(do.call(cbind, filled_tables), stringsAsFactors = FALSE)
特殊情况处理
如果提取的子列表是行数据(每个子列表对应表格的一行,列数不一致),则调整为按行填充:
# 找到最多列数 max_cols <- max(sapply(tables_page2, length)) # 每行补NA至统一列数 filled_rows <- lapply(tables_page2, function(row) { c(row, rep(NA, max_cols - length(row))) }) # 合并为Data Frame df_page2 <- as.data.frame(do.call(rbind, filled_rows), stringsAsFactors = FALSE)
内容的提问来源于stack exchange,提问作者Humberto R
相关产品推荐
相关产品推荐

