五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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)遵守國家法律
河西区| 沂源县| 嵊州市| 班玛县| 乐陵市| 宁晋县| 浏阳市| 济阳县| 灵宝市| 清水县| 新丰县| 淅川县| 奈曼旗| 恩平市| 洛阳市| 福安市| 日照市| 平舆县| 璧山县| 永康市| 丰城市| 牙克石市| 垫江县| 张家口市| 巴彦县| 青浦区| 藁城市| 平和县| 上虞市| 手游| 武胜县| 嘉定区| 宝清县| 天峻县| 四会市| 宁阳县| 额济纳旗| 古蔺县| 凉山| 高要市| 洱源县|