R - 命令行参数中的转义逗号
R - Escaped comma in command line argument
我正在尝试将逗号分隔的向量解析为命令行参数。但是,我想忽略所有转义逗号。
即
当运行以下
#test.R
args <- commandArgs(TRUE)
print (args)
print (unlist(strsplit(args, ",", perl=TRUE))) # also doesn't work with perl=FALSE
和运行以下:
Rscript test.R "w1,w2\,w3,w4"
这会产生以下输出:
[1] "w1,w2\,w3,w4"
[1] "w1" "w2\" "w3" "w4"
我预期的输出是:
[1] "w1,w2\,w3,w4"
[1] "w1" "w2,w3" "w4"
我也尝试了很多库,包括 optparse 和 argparser,但我也得到了类似的输出...
因此,如果有人可以帮助我忽略转义字符,我将不胜感激。
也许这有帮助:首先,将转义序列替换为不带“,”的字符,例如
args <- "w1,w2\,w3,w4" # commandArgs(TRUE)
s1 <- gsub("\,", "#", args, fixed=TRUE)
然后执行strsplit
:
s2 <- unlist(strsplit(s1, ","))
最后撤销替换
s3 <- gsub("#", ",", s2) # expected result
这要求您有一个转义字符(在示例中为“#”),否则您确定不会作为参数传递。
更直接的方法是不用strsplit
:
pos <- unlist(gregexpr("[^\\],", args, perl=TRUE)) # args is as above
substring(args, c(1, pos+2), c(pos,nchar(args))) # expected result
我正在尝试将逗号分隔的向量解析为命令行参数。但是,我想忽略所有转义逗号。
即
当运行以下
#test.R
args <- commandArgs(TRUE)
print (args)
print (unlist(strsplit(args, ",", perl=TRUE))) # also doesn't work with perl=FALSE
和运行以下:
Rscript test.R "w1,w2\,w3,w4"
这会产生以下输出:
[1] "w1,w2\,w3,w4"
[1] "w1" "w2\" "w3" "w4"
我预期的输出是:
[1] "w1,w2\,w3,w4"
[1] "w1" "w2,w3" "w4"
我也尝试了很多库,包括 optparse 和 argparser,但我也得到了类似的输出...
因此,如果有人可以帮助我忽略转义字符,我将不胜感激。
也许这有帮助:首先,将转义序列替换为不带“,”的字符,例如
args <- "w1,w2\,w3,w4" # commandArgs(TRUE)
s1 <- gsub("\,", "#", args, fixed=TRUE)
然后执行strsplit
:
s2 <- unlist(strsplit(s1, ","))
最后撤销替换
s3 <- gsub("#", ",", s2) # expected result
这要求您有一个转义字符(在示例中为“#”),否则您确定不会作为参数传递。
更直接的方法是不用strsplit
:
pos <- unlist(gregexpr("[^\\],", args, perl=TRUE)) # args is as above
substring(args, c(1, pos+2), c(pos,nchar(args))) # expected result