在R中创建一个带有参数的函数,该参数的输入以数字开头

时间:2014-01-31 18:10:27

标签: r function parsing arguments

如果在某个地方得到了解答,我很抱歉,但我无法在任何地方找到类似的问题。

我正在尝试创建一个函数,其中一个输入参数可以(但不一定)是一个以数字开头的字符串。当我尝试运行此功能时,R会感到困惑。

例如:

foo(df, 10, 5fum)

给我错误:

  

错误:“do_cv_class(data,10,5fum”

中的意外符号

在我计划取得"5fum"并将其解析为2个参数"5""fum"的函数中。我不想创建第4个参数来分隔5和fum。

有什么想法吗?对此有任何帮助都很棒。

1 个答案:

答案 0 :(得分:3)

如上面的评论所示,您需要将"5fum"作为字符串传递。如果不重写R的解析器,几乎不可能想到foo(df, 10, 5fum)可以合法输入的方式。想必你正在考虑这样的事情:

foo <- function(df, num1, str1) {
   str1_num <- as.numeric(gsub("([0-9]+)([[:alpha:]]+)","\\1",str1))
   str1_alpha <- gsub("([0-9]+)([[:alpha:]]+)","\\2",str1)
   print(str1_num)
   print(str1_alpha)
}

foo(df, 10, "5fum")
## [1] 5
## [1] "fum"

(我认为将参数传递为像~5fum这样的东西可能有效,因为~会阻止后续符号立即被评估,但它不会:符号5fum仍然需要要解析。)