如果在某个地方得到了解答,我很抱歉,但我无法在任何地方找到类似的问题。
我正在尝试创建一个函数,其中一个输入参数可以(但不一定)是一个以数字开头的字符串。当我尝试运行此功能时,R会感到困惑。
例如:
foo(df, 10, 5fum)
给我错误:
错误:“do_cv_class(data,10,5fum”
中的意外符号
在我计划取得"5fum"
并将其解析为2个参数"5"
和"fum"
的函数中。我不想创建第4个参数来分隔5和fum。
有什么想法吗?对此有任何帮助都很棒。
答案 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
仍然需要要解析。)