【问题标题】:Function which gives in output name of vector [duplicate]给出向量输出名称的函数[重复]
【发布时间】:2020-08-10 12:49:31
【问题描述】:

我搜索了一段时间,但找不到答案。有没有给出向量名称的函数?拥有这样的东西对我来说非常重要。就像下面的例子一样。

 long_name<-c(1,2,3)
    vec_name<-function(vec){} 
    vec_name(long_name) 
    long_name

【问题讨论】:

  • 你试过names(long_name)吗?
  • 是的,它在输出中给出 NULL

标签: r


【解决方案1】:

substitute 呢?

vec_name <- function(vec) {
  substitute(vec)
} 

给了

> vec_name(long_name)
long_name

【讨论】:

  • 这更简单,+1,不过为什么不直接使用quote,而不需要包装在函数中?
  • @AllanCameron 谢谢,你的也很棒,+1。似乎quote 给出了vec 而不是long_name
  • 我的意思是vec_name(long_name)quote(long_name)不一样吗?
  • @AllanCameron 是的,他们是一样的
【解决方案2】:

你可以使用match.call:

long_name <- c(1, 2, 3)

vec_name <- function(vec) as.character(as.list(match.call())[[2]])

vec_name(long_name) 
#> [1] "long_name"

reprex package (v0.3.0) 于 2020 年 8 月 10 日创建

【讨论】:

  • 有点意思,不管你输入什么向量,它都可以正常工作。如果没有函数,你会怎么做?这不直观,因为我没有看到您直接在函数中使用 vec
  • @John “没有功能”是什么意思?如果你愿意,你可以做as.character(quote(long_name))
猜你喜欢
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 2021-12-05
相关资源
最近更新 更多