【问题标题】:Passing arguments for variables in a function为函数中的变量传递参数
【发布时间】:2020-10-21 09:38:10
【问题描述】:

我是 R 的新手,并试图理解函数的基本语法。

在下面的f(x1)g(x,1)这两个函数中,我想生成y=2。只有前者有效。

我熟悉 str_interp()paste() 函数,但它们似乎只在字符串上下文中工作,而不是在变量上下文中工作。例如,prefixnum <- str_interp("${prefix}${num}") 不能解决问题。

我的动机是我想通过指定变量名称的组件来调用函数。我的背景是在 Stata 中,占位符用反引号和勾号指定(例如,`prefix'`num')。咨询了几个relevantresources,都没有用。

顺便说一句,我已经阅读了关于变量是否应该以其数据框为前缀的不同想法(例如,df$var)。是否遵循这个约定背后的逻辑是什么?为什么f(df$x1)可以工作,而写f(x1)和修改函数为y <- df$var*2不行?

df <- data.frame(x1=1)

f <- function(var) {
  y <- var*2
  y
}
f(df$x1)

g <- function(prefix,num) {
  y <- df$prefixnum*2 #where "prefixnum" is a placeholder of some sort
  y
}
g(x,1)

【问题讨论】:

    标签: r function syntax


    【解决方案1】:

    您可能正在尝试将列名作为参数传递给函数。您可以尝试将prefixnum 粘贴在一起以获取列名并将其用于子集数据框。

    g <- function(data, prefix, num) {
      y <- data[[paste0(prefix, num)]] *2 
      y
    }
    
    g(df,'x', 1)
    #[1] 2
    

    【讨论】:

      猜你喜欢
      • 2012-04-12
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多