gpt4 book ai didi

r - 解析R中的字符串

转载 作者:行者123 更新时间:2023-12-05 01:48:36 25 4
gpt4 key购买 nike

我正在编写一个 R 脚本,我将从命令行将其作为脚本运行。我使用关键字将命令行参数传递给脚本,如下所示:

myscript.R --arg1=100 --arg2='你好' --arg3=3.14159

我想编写一个 R 函数,它将命令行值返回到类似对象的字典中(即 R 中的列表列表),用默认值填充未提供的参数。

例如

parseArguments <- function() {
options <- commandArgs(TRUE)

# options now contains "--arg1=100 --arg2='hello' --arg3=3.14159"
# parse string held in variable named options and stuff into a list
# .... Do some string manip ....

args <- list()
args['arg1'] <- 100
args['arg2'] <- 'hello'
args['arg3'] <- 3.14159
args['arg4'] <- 123 # Not found in parsed line so we use a hard coded default

return (args)
}

有人可以帮忙填空吗?

最佳答案

> parseArguments <- function() {
+ text1 = "--arg1=100 --arg2='hello' --arg3=3.14159"
+ eval(parse( text= gsub("\\s", ";", gsub("--","", text1))))
+ args <- list()
+ args['arg1'] <- arg1
+ args['arg2'] <- arg2
+ args['arg3'] <- arg3
+ args['arg4'] <- 123 # Not found in parsed line so we use a hard coded default
+
+ return (args)
+ }
> argres <- parseArguments()
> argres
$arg1
[1] 100

$arg2
[1] "hello"

$arg3
[1] 3.14159

$arg4
[1] 123

解决未知数量的参数修改问题:

 parseArguments <- function() {
text1 = "--arg1=100 --arg2='hello' --arg3=3.14159"
eval(parse(text=gsub("\\s", ";", gsub("--","", text1))))
args <- list()
for( ar in ls()[! ls() %in% c("text1", "args")] ) {args[ar] <- get(ar)}
return (args)
}
argres <- parseArguments()
argres
#---------
$arg1
[1] 100

$arg2
[1] "hello"

$arg3
[1] 3.14159

关于r - 解析R中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9659348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com