簡體   English   中英

在 Windows 中從命令/matlab 調用 Rscript 時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM