最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

R腳本的傳參

2023-04-14 11:07 作者:小云愛生信  | 我要投稿

爾云間 ?一個(gè)專門做科研的團(tuán)隊(duì)


原創(chuàng)? 小果? 生信果 ? 關(guān)注我們


今天小果為大家?guī)淼氖荝腳本的傳參。一個(gè)R腳本要在linux上運(yùn)行時(shí)不可避免的要使用到參數(shù)傳遞這一功能。坦率得講,R語言自帶的commandArgs()函數(shù)完全可以勝任大多數(shù)的參數(shù)傳遞任務(wù),但是為了更方便觀察更推薦使用getopt包。


函數(shù)commandArgs()的使用:

例如,腳本文件名為foot.R, 可以這樣寫:


arg=commandArgs(T)
input1<-arg[1]
Input2<-arg[2]
...

函數(shù)中有一個(gè)布爾型參數(shù)TRUE,這個(gè)意思是讓函數(shù)可以將接收到的所有輸入依次存儲(chǔ)進(jìn)arg列表中。那么參數(shù)是如何傳入腳本的呢?

在使用commandArgs()函數(shù)時(shí),參數(shù)是沒有名字的,只需:


Rscript ?foot.R ?1 ?2

即可將1與2傳入腳本,按照順序1將被存入arg[1],2將被存入arg[2]那么如果檢驗(yàn)輸入?yún)?shù)的數(shù)目呢?可以這樣寫:

If(length(arg)!=2){
cat(“you shoudl in put 1. input2 2.input2”)
break
}

但是,這種寫法有兩個(gè)弊端:

一是如果你需要的是一個(gè)字符串1,那么很幸運(yùn)直接用就可以。但如果你需要的是一個(gè)數(shù)值型的1,那你是無法直接傳入的,需要在腳本中轉(zhuǎn)化才行,很不方便。

二是如果我輸入了,但是輸錯(cuò)了,你需要的是數(shù)字,但我輸入的是一個(gè)蘋果和一個(gè)栗子,函數(shù)會(huì)照單全收全部吃進(jìn)arg列表中,這也會(huì)帶來麻煩。所以,我們有一個(gè)單獨(dú)用來傳參的getopt包可以使用,更方便。


library(getopt)

首先創(chuàng)建一個(gè)列數(shù)為5的矩陣。第一列參數(shù)名;第二列參數(shù)名簡(jiǎn)寫;第三列0,1或2依次表示不接收變量,可以接收變量與必須接受變量;第四列為變量的類型又logical、integer、double、complex、character、numeric可供選擇;第5列為變量的說明。而矩陣的每一行就是一個(gè)參數(shù)。


spec <- matrix(
c("expr",? "e", 1, "character", "This is path of gene expr!",
"help",?? "h", 0, "logical",? "This is Help!"),
byrow=TRUE, ncol=5)
opt <- getopt(spec=spec)

這里的opt存儲(chǔ)了輸入的全部的參數(shù),若要調(diào)用只需opt$參數(shù)名即可


if( !is.null(opt$help) || is.null(opt$expr) ){
cat(paste(getopt(spec=spec, usage = T), "\n"))
quit()
}

這一個(gè)檢驗(yàn)參數(shù)的步驟,如果想偷懶的話,藍(lán)字不用變,只要根據(jù)自己的參數(shù)數(shù)量對(duì)is.null部分進(jìn)行增改就可以。


使用時(shí)只需這樣寫命令:Rscript foot.R --expr 文件的路徑 或Rscript foot.R ?-e 文件的路徑。

今天的分享就到這里,小果祝大家生活愉快。



推薦閱讀


關(guān)注小果,小果將會(huì)持續(xù)為你帶來更多生信干貨哦。

“生信果”,生信入門、R語言、生信圖解讀與繪制、軟件操作、代碼復(fù)現(xiàn)、生信硬核知識(shí)技能、服務(wù)器、生物信息學(xué)的教程,以及基于R的分析和可視化等原創(chuàng)內(nèi)容,一起見證小白和大佬的成長(zhǎng)。


R腳本的傳參的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
务川| 大关县| 南宫市| 山东省| 龙口市| 西平县| 澄江县| 南岸区| 沁阳市| 全椒县| 高碑店市| 昌都县| 南川市| 枝江市| 金乡县| 石首市| 信阳市| 阳江市| 郑州市| 侯马市| 广饶县| 杭锦后旗| 新竹市| 巍山| 汉沽区| 西充县| 绥中县| 萨嘎县| 扶绥县| 乾安县| 黔西县| 临猗县| 中江县| 永济市| 宜昌市| 安阳市| 调兵山市| 百色市| 阳原县| 卫辉市| 吉安县|