使用函数输出输入的字符值

时间:2015-01-16 22:24:05

标签: r

如何告诉函数输出输入名称?

例如:

test <- function (thisisthename) {
print (thisisthename)
}

input <- apple

现在,如果我这样做:

test(input) 

将输出

"apple" 

但如何输出“输入”,因为“输入”是输入的名称?

2 个答案:

答案 0 :(得分:1)

尝试:

test <- function (thisisthename) {
    substitute(thisisthename)
}

或如果您需要引号,请使用deparse(substitute(thisisthename))

答案 1 :(得分:0)

调用substitute(x)返回变量x引用的解析树(参数x的内部表示),deparese获取解析树并返回带有R的字符串该解析树的代码表示。因此,FUN返回参数x的字符串表示形式:

FUN = function(x)deparse(substitute(x))

请记住,deparse与解析相反 - 它采用代码并生成R可以评估的符号树。因此,FUN返回表达式,可以是变量名,如:

FUN(x=foo)
#> "foo"

或表达:

FUN(x=1:2 + 3)
#> 1:2 + 3

请注意,deparsing并未完全概括输入的代码文本:

FUN(x=1:2+3)
#> 1:2 + 3
FUN(x=1:2      +       3)
#> 1:2 + 3

并且deparse(substitute(x))适用于普通变量,而不仅仅是函数参数:

y = 1:2 + 3
deparse(substitute(y))
#> 1:2 + 3