国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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)遵守國家法律
白朗县| 弋阳县| 普安县| 乡城县| 东辽县| 元氏县| 双桥区| 岗巴县| 鞍山市| 馆陶县| 庐江县| 孙吴县| 红河县| 喀喇沁旗| 随州市| 周至县| 沐川县| 平潭县| 迁西县| 朝阳县| 唐海县| 交城县| 抚宁县| 包头市| 海原县| 南陵县| 黄龙县| 济阳县| 会东县| 津南区| 盐源县| 炉霍县| 河曲县| 江达县| 张家口市| 张掖市| 上饶县| 贡嘎县| 江华| 临湘市| 开江县|