Quarto R块中readr导入CSV后行子集报错:参数行数不一致
在QMD文件中使用readr::read_csv导入CSV后无法执行行子集操作
数据示例
创建名为BSI_test8.csv的文件,内容如下:
id,data_collection_date,data_collection,reporting_organisation_code,specimen_date,specimen_time,week_no,icu_admission_date,icu_admission_time 478574,01/01/1900,ICU BSI,ABC1,01/01/1900,12:00,1,31/12/1899,23:00
代码步骤
- 创建一个.qmd文件
- 插入新的R代码块
- 在代码块中粘贴以下代码:
linelist_pbc_raw <- readr::read_csv("./BSI_test8.csv", show_col_types = FALSE) linelist_pbc_raw[linelist_pbc_raw$specimen_date != linelist_pbc_raw$data_collection_date, ]
- 运行该代码块
报错信息
执行后出现如下错误:
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : arguments imply differing number of rows: 0, 1
明明两列行数都是1,无法理解该错误原因。
可行解决方案
已测试出几种可行的解决方法:
- 在控制台直接运行完全相同的子集代码
- 在R代码块中,子集操作前移除部分日期相关列(本示例仅移除时间列):
linelist_pbc_raw |> subset(specimen_date != data_collection_date, select = -c(specimen_time, icu_admission_time))
- 在R代码块中使用
data.table::fread导入数据后再执行子集操作:
linelist_pbc_raw_datatable <- data.table::fread("./BSI_test8.csv") linelist_pbc_raw_datatable[linelist_pbc_raw_datatable$specimen_date != linelist_pbc_raw_datatable$data_collection_date, ]
问题推测与环境信息
推测该问题可能是readr导入无末尾空行的数据时,与RStudio运行qmd中R代码块的方式存在bug导致。
环境信息:
- R版本:4.4.1
- RStudio版本:2024.9.0.375
- 操作系统:Windows 10 x64(版本19045)
内容的提问来源于stack exchange,提问作者Andrea M
相关产品推荐
相关产品推荐

