【问题标题】:call a method by a character variable in R5 class通过 R5 类中的字符变量调用方法
【发布时间】:2012-11-24 05:43:44
【问题描述】:

我想知道如何通过使用方法名称的字符变量来调用 R5 类对象的方法。 假设我有一个 R5 类对象 Object.R5,它有一个名为 myMethod 的方法。我们调用该方法的通常方式是输入:

Object.R5$myMethod()

但是如果我设置一个变量

method.name

我想知道如何使用 method.name 调用该方法?我试过了:

do.call(paste("Object.R5$", method.name, "()", sep=""))

但是这会提示一个错误信息说'what'必须是一个字符串或者一个函数。我知道答案一定是微不足道的,但我是 R5 班的新手,所以......任何人都知道答案请帮忙。

【问题讨论】:

  • .... 教这个的人真的不喜欢 R5 的名称。
  • @DWin 谁是“教这个的人”?
  • 好吧,约翰·钱伯斯一个。

标签: r


【解决方案1】:
get(method_name, envir=Object.R5)

【讨论】:

  • 谢谢!我觉得这个方法很好。但是,这仅在我运行 Object.R5$myMethod() 一次后才有效。否则,如果我直接运行 get(method_name, envir=Object.R5) ,它会提示错误消息说找不到函数'myMethod'。我错过了什么吗?
  • 你说你有一个名为“Object.R5”的对象。
【解决方案2】:
eval(parse(text=paste0('Object.R5$',method.name,'()')))

【讨论】:

  • 这绝对有效!但从某种意义上说,它并不灵活,因为我不能以通常的方式添加参数(除非参数是在字符串中添加的)。
猜你喜欢
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 2020-08-28
相关资源
最近更新 更多