首页 > 解决方案 > 将函数参数另存为字符

问题描述

我想将函数的参数保存为 r 中的变量。我试过 deparse,但在数据帧上它返回错误的东西。下面是我想要的。

dataframe <- data.frame(a=c(1, 2, 3), b=c(3, 6, 8))

afunction <- function(arg1, arg2) {
  arg1_character <- deparse(arg1)
  arg2_character <- deparse(arg2)
}

afunction(a ~ b, dataframe)

基于这个简单的例子,我想要以下输出:

arg1_character <- "a~b"
arg2_character <- "dataframe"

标签: rdataframecharacter

解决方案


试试deparse(substitute())

afunction <- function(arg1, arg2) {
  arg1_character <- deparse(substitute(arg1))
  arg2_character <- deparse(substitute(arg2))
  c(arg1_character, arg2_character)
}

afunction(a ~ b, dataframe)
# [1] "a ~ b"     "dataframe"

或者试试match.call()

afunction2 <- function(arg1, arg2) {
  cat('Call:\n')
  match.call()
}
afunction2(a ~ b, dataframe)
# Call:
# afunction2(arg1 = a ~ b, arg2 = dataframe)

推荐阅读