我正在尝试为一个包创建一个函数,该函数允许用户在没有引号的情况下读取数据。它几乎按预期工作,除了函数将 3.30 转换为 3.3,即使最终输出是字符。如何让我的函数读取数字元素但不删除尾随零。总体思路是:
- 不使用引号读取元素的函数
- 函数不会丢弃 R 认为不重要的零
- 尽管元素可能看起来是数字的,但我希望它们作为字符元素输出
这是两次尝试以及它们的输出(一次尝试使用substitute(...())
,另一次使用match.call(expand.dots = FALSE)
:
#attempt #1
fun <-
function(...){
substitute(...())
}
fun(3.30, 5.05)
#dropped zero on 3:30 (not what I want)
> fun(3.30, 5.05)
[1] "3.3" "5.05"
#attempt #2
fun <-
function(...){
x <- match.call(expand.dots = FALSE)
as.character(x[[2]])
}
fun(3.30, 5.05)
#again dropped zero on 3:30 (not what I want)
> fun(3.30, 5.05)
[1] "3.3" "5.05"
使用引号它输出我想要的,但这违背了不必提供引号的目的:
fun('3.30', '5.05')
> fun('3.30', '5.05')
[1] "3.30" "5.05"
PS如果有人对此线程有更好的标题,请随时编辑