运行lilikoi R包的lilikoi.featuresSelection()时出现非数值参数错误
使用lilikoi R包时
lilikoi.featuresSelection()函数报错问题 按照lilikoi官方文档的内置示例操作,大部分步骤可正常执行,但运行lilikoi.featuresSelection()时触发错误。
已成功执行的代码
library(lilikoi) dt <- lilikoi.Loaddata(file=system.file("extdata", "plasma_breast_cancer.csv", package = "lilikoi")) Metadata <- dt$Metadata dataSet <- dt$dataSet # 将代谢物名称转换为HMDB ID convertResults=lilikoi.MetaTOpathway('name') Metabolite_pathway_table = convertResults$table head(Metabolite_pathway_table) # 通过pathtracer算法将代谢物转换为通路 PDSmatrix=lilikoi.PDSfun(Metabolite_pathway_table)
报错代码与错误信息
执行以下代码:
selected_Pathways_Weka= lilikoi.featuresSelection(PDSmatrix,threshold= 0.50,method="gain")
出现错误:
Error in training_diagnosis$Label - 1 : non-numeric argument to binary operator
会话信息
> sessionInfo() R version 4.5.0 (2025-04-11) Platform: x86_64-pc-linux-gnu Running under: Parabola GNU/Linux-libre Matrix products: default BLAS: /usr/lib/libblas.so.3.12.0 LAPACK: /usr/lib/liblapack.so.3.12.0 LAPACK version 3.12.0 locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 LC_NAME=en_US.UTF-8 [9] LC_ADDRESS=en_US.UTF-8 LC_TELEPHONE=en_US.UTF-8 [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=en_US.UTF-8 time zone: Europe/Belgrade tzcode source: system (glibc) attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] lilikoi_2.1.0
解决建议
- 检查标签列类型:错误提示表明
training_diagnosis$Label不是数值型(大概率是因子或字符型),无法执行减法操作。可以将Metadata$Label转换为数值型后重试:Metadata$Label <- as.numeric(as.factor(Metadata$Label)) - 对齐包版本:当前使用的是lilikoi_2.1.0,但参考的官方文档是2.1.1版本,版本差异可能导致参数或内部逻辑不一致,尝试升级到2.1.1版本。
- 验证数据匹配性:确认
PDSmatrix的样本顺序与Metadata完全一致,避免因样本错位导致标签调用异常。
内容的提问来源于stack exchange,提问作者Давид Пирић
相关产品推荐
相关产品推荐

