我正在使用 optparse 呼叫一個引數,但我需要結果引數(變數x)的字串采用以下格式"test", "test2", "test3"(引號以逗號分隔):
# Set up command line arguments
library("optparse")
option_list = list(
make_option(c("--test"), type="character", default=NULL,
help="test", metavar="character")
opt_parser = OptionParser(option_list=option_list);
opt = parse_args(opt_parser);
# grab argument into x variable
x <- (opt$pathcsv)
print(x)
進入命令列:
Rscript --vanilla riboeclip_ma.R --pathcsv="test test2 test3"
輸出是字符型別:
"test test2 test3"
但是,我希望 x 變數的格式為 "test", "test2", "test3"
我的代碼是這樣設定的(注意我"test", "test2", "test3"在向量中的方式):
all_counts.poly.colData <-
data.frame(Condition =
c("test", "test2", "test3"))
但是,我想傳遞該 x 變數來實作相同的結果(我正在嘗試自動化此程序)。
all_counts.poly.colData <-
data.frame(Condition =
c(x))
請讓我知道是否有更好的方法來做到這一點,因為我還是 R 的新手并且昨天開始使用命令列引數。
uj5u.com熱心網友回復:
使用splitstrfrom base R 將其拆分為向量:
strsplit(opt$pathcsv, " ")[[1]]
如果要添加逗號,可以使用gsub:
gsub(" ", ", ", opt$pathcsv)
[1] "test, test2, test3"
如果您希望將文字引號dQuote應用于每個引號,然后將其粘貼回一起:
paste(sapply(strsplit(opt$pathcsv, " ")[[1]], dQuote), collapse = ",")
[1] "“test”,“test2”,“test3”"
根據您的問題,您應該使用strsplit來復制您硬編碼的內容:
data.frame(Condition =
c("test1", "test2", "test3"))
Condition
1 test
2 test2
3 test3
x <- strsplit(opt$pathcsv, " ")[[1]]
data.frame(Condition = x)
Condition
1 test
2 test2
3 test3
c("test", "test1", "test2")是字符向量,您不應嘗試通過添加引號和逗號來復制創建字符向量的語法。相反,將命令列引數直接決議為字符向量:
all(strsplit(opt$pathcsv, " ")[[1]] == c("test", "test2", "test3"))
[1] TRUE
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/321785.html
