【问题标题】:How to convert variable (object) name into String [duplicate]如何将变量(对象)名称转换为字符串[重复]
【发布时间】:2013-01-12 16:46:49
【问题描述】:

我有以下变量名称为"foo"的数据框;

 > foo <-c(3,4);

我想做的是将"foo" 转换为字符串。所以在一个函数中 我不必重新创建另一个额外的变量:

   output <- myfunc(foo)
   myfunc <- function(v1) {
     # do something with v1
     # so that it prints "FOO" when 
     # this function is called 
     #
     # instead of the values (3,4)
     return ()
   }

【问题讨论】:

  • 只是好奇 - 为什么需要从对象中获取对象名称?
  • 我有一个示例使用:我有一个函数,它以向量作为参数,并将该向量的值附加到数据框中的列中。我还需要将值的来源填充到另一列中,即初始向量的名称。瞧。
  • 使用需要字符串的exists()
  • @ChinmayPatil 例如,将对象的字符串名称传递给其输出文件名可能很有用。
  • 我的两分钱:使用给定变量名称作为标签/图例的绘图函数

标签: string r object


【解决方案1】:

您可以使用deparsesubstitute 来获取函数参数的名称:

myfunc <- function(v1) {
  deparse(substitute(v1))
}

myfunc(foo)
[1] "foo"

【讨论】:

  • @MahdiJadaliha 你可以试试这个功能:myfunc &lt;- function(v1) { s &lt;- substitute(v1); if (length(s) == 1) deparse(s) else sub("\\(.", "", s[2]) }.
  • 如何处理多个对象?具体来说,您将如何为每个对象名称获取单独的字符串? (例如,如果我有对象 foo、foo1 和 foo2,并且我想创建一个它们的名称列表作为单独的字符串)。
  • @theforestecologist 如果函数有多个参数,您可以对每个参数使用deparse(substitute(.)),将结果存储在变量中,然后将变量放入列表中。
  • @SvenHohenstein 这在您使用 for 循环时不起作用...
  • 您也可以使用 deparse(quote(var)) ,其中引号将 var 从评估中冻结,而 deparse 与 parse 相反,将符号恢复为字符串
猜你喜欢
  • 2014-05-01
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
相关资源
最近更新 更多