【问题标题】:[R]: using character as argument in a function[R]:在函数中使用字符作为参数
【发布时间】:2018-02-23 08:10:10
【问题描述】:

我只是一个关于大小写的简单问题,我想使用一个字符作为自创函数的参数。

我有三个时间序列集。假设 a_ts、b_ts 和 c_ts,我想根据功能输入将 a 或 b 与 c 合并。

foo <-function(type){
   total_series <- rbind(type_ts,c_ts)
   return(total_series)
}

类型为 type="a", type="b"。

假设我不想更改角色名称。如何解决函数中没有用引号打印的问题。

我希望 rbind(a_ts,c_ts) 或 rbind (b_ts,c_ts) 在我的字符参数周围没有引号。

感谢您的帮助。

【问题讨论】:

  • as.name("x") 给你x ,noquote("x") gives you x` 所以从技术上讲你必须告诉你需要什么。另请记住,如果您必须输入type,那么您将需要输入rbind(as.name(paste0(type,"_ts")),c_ts)
  • 我需要第一个。 a_ts 或 b_ts 应该是解决方案。应消除 a/b 周围的引号。它不适用于该系列,因为该系列采用 xts 格式。错误是对象不是矩阵。
  • 对不起,我不明白你的意思。

标签: r function character


【解决方案1】:

如果我理解正确的话,你需要这样的东西:

foo <- function(obj1, type) {
  obj2 <- paste0(type, "_ts")
  total_series <- rbind(obj1, get(obj2, envir = .GlobalEnv))
  return(total_series)
}

【讨论】:

  • 看起来不错,但由于 Vala 总是想与他的 c_ts 变量结合,我会这样简化:foo &lt;- function(type) { rbind(get(paste0(type, "_ts"), envir=globalenv()), c_ts) }
最近更新 更多