在R中使用read_xlsb读取大xlsb文件设置范围时报错求助
解决R中read_xlsb分块读取大xlsb文件的报错问题
问题1:使用cellranger::cell_limits触发逻辑值长度报错
报错原因
read_xlsb的range参数不支持cellranger::cell_limits对象,它仅接受两种格式:
- 字符型的A1/R1C1格式范围字符串
- 长度为4的数值向量,格式为
c(min_row, min_col, max_row, max_col),其中NA表示对应维度的末尾
修复代码
直接用数值向量替代cell_limits:
Df <- read_xlsb("C:/MyData.xlsb", sheet = "mysheet", range = c(1, 1, 100000, NA), # 表示从第1行1列到第100000行、最后一列 col_names = TRUE )
问题2:长行号的A1格式范围触发解析报错
报错原因
当行号过长(如1500000)时,readxlsb的字符型范围解析器可能误判列标与行号的边界,导致格式识别失败。小范围行号(如1500)不会触发是因为行号长度短,解析逻辑能正确识别。
修复代码
改用数值向量指定范围,避免字符解析问题。BC列对应第55列(A=1,Z=26,AA=27,以此类推),直接传入数值向量:
Df <- read_xlsb("C:/MyData.xlsb", sheet = "My_sheet", range = c(1, 1, 1500000, 55), # 1-1500000行,1-55列(对应A-BC列) col_names = TRUE )
若不确定目标列的列号,可先用小范围读取获取完整列数后,再代入分块逻辑。
内容的提问来源于stack exchange,提问作者Laurent Franckx
相关产品推荐
相关产品推荐

