代码迁移至新电脑后出现arguments imply differing number of rows:1,0错误求助
问题排查:R代码迁移后触发"arguments imply differing number of rows: 1, 0"错误
报错信息
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : arguments imply differing number of rows: 1, 0 Error: arguments imply differing number of rows: 1, 0
所用代码
library("nlmixr2") data<- read.csv("C:\\Users\\Simcyp Simulator\\Downloads\\NHP Nonmem style file.csv") nhp <- function() { ini({ tcl <- 4.15 tv <- 0.9 eta.cl + eta.v ~ c(1, 0.01, 1) add.err <- .0278 }) model({ cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) ke <- cl / v d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.err) }) } fit.nhp <- nlmixr2(nhp, data, est = "saem",control=list(print=0), table=list(cwres=TRUE, npde=TRUE))
已尝试操作
- 更换相同数据的CSV、Excel格式文件
- 直接在R中导入数据使用
- 安装与原电脑版本一致的最新包
排查方案
验证数据导入完整性
- 运行
dim(data)查看数据的行数列数,和原电脑结果对比,确认新电脑导入的数据无行/列丢失 - 运行
summary(data)检查nlmixr2必备列(如ID、TIME、DV等)是否存在、格式正确,无大量缺失值 - 尝试用
data <- na.omit(data)移除含缺失值的行后重新测试
- 运行
修复模型参数定义漏洞
- 模型中使用了
ka参数,但未在ini()块中初始化,这会导致计算维度不匹配。在ini()块中添加ka的初始值,示例:ini({ tcl <- 4.15 tv <- 0.9 ka <- 1 # 新增ka初始值,可根据数据调整 eta.cl + eta.v ~ c(1, 0.01, 1) add.err <- .0278 }) - 确认所有模型用到的参数都已在
ini()中定义初始值
- 模型中使用了
排查文件路径与编码问题
- 将CSV文件移动到无空格、无特殊字符的路径下(如
"C:\\Data\\NHP.csv"),重新导入数据 - 尝试指定编码导入,匹配原电脑的文件编码:
read.csv("文件路径", fileEncoding = "GBK")(或"UTF-8")
- 将CSV文件移动到无空格、无特殊字符的路径下(如
核对环境版本一致性
- 运行
R.version.string对比新、旧电脑的R版本,nlmixr2对R版本有明确要求,版本不匹配可能引发隐性错误 - 运行
packageVersion("nlmixr2")、packageVersion("rxode2")确认依赖包版本和原电脑完全一致,必要时重新安装所有依赖:install.packages("nlmixr2", dependencies = TRUE)
- 运行
分步调试定位问题
- 简化拟合调用,注释掉
table参数并打开日志输出:fit.nhp <- nlmixr2(nhp, data, est = "saem", control=list(print=1)),查看中间计算过程 - 单独运行
nhp(),确认模型对象能正常生成,排除语法错误
- 简化拟合调用,注释掉
内容的提问来源于stack exchange,提问作者ksadko
相关产品推荐
相关产品推荐

