![](/img/trans.png)
[英]Error when calling Rscript from an R session: .libPaths() is “semi” inherited
[英]Error when calling Rscript from command/matlab in windows
我有一個用 R 編寫的腳本並測試它運行良好。 代碼如下:
setwd("C:/Users/xxx/Desktop/xxx")
rawdata <- read.delim("xxx.txt", check.names = FALSE, stringsAsFactors = FALSE)
library(edgeR)
y <- DGEList(counts = rawdata[,7:14], genes = rawdata[,1:6])
o <- order(rowSums(y$counts),decreasing=TRUE)
y <- y[o,]
d <- duplicated(y$genes)
y <- y[!d,]
y$samples$lib.size <-colSums(y$counts)
rownames(y$counts) <- rownames(y$genes)
y$genes <-NULL
y <- calcNormFactors(y)
write.table(y$samples, file = "TMM_normalization_factors.txt")
這在 R 中運行時效果很好。但是,從命令行(windows cmd)或 matlab 調用時,它顯示以下錯誤:
Error in is.data.frame(x) : could not find function "getGeneric"
Calls: order -> rowSums -> is.data.frame
Execution halted
我是一名新程序員,對編程的了解非常有限。 有人可以告訴我這段代碼可能有什么問題嗎? 非常感謝。
更新:剛剛測試,錯誤在
rowSums
命令。 Rscript 似乎無法識別此命令? 對此有何建議?
正如上面評論中提到的 flodel,代碼在直接從 R 運行而不是在使用 Rscript 運行時工作的原因是因為 Rscript 過去不加載方法包。 因此,解決方案是在腳本頂部加載方法包:
load(methods)
但是,從 R 3.5.0(於 2018 年 4 月 23 日發布)開始,現在默認加載方法包。 來自R 新聞:
如果未使用 --default-packages,則 Rscript 現在檢查環境變量 R_SCRIPT_DEFAULT_PACKAGES。 如果已設置,則它優先於 R_DEFAULT_PACKAGES。 如果沒有在命令行或這些環境變量之一指定默認包,那么 Rscript 現在使用與 R 相同的默認包。 現在,可以通過將環境變量 R_SCRIPT_LEGACY 設置為 yes 來恢復以前不包含方法的行為.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.