【问题标题】:Function in R, passing a dataframe and a column name [duplicate]R中的函数,传递数据框和列名[重复]
【发布时间】:2011-09-05 15:42:08
【问题描述】:

可能重复:
Pass a data.frame column name to a function

我正在尝试在 R 中创建一个函数,其中输入之间有数据框和列名。代码是这样的:

DT_CAP_COLUMN  <- function(input_table,output_table,column_name,
                           cap_function,Parameter){
  input_table$column_name
  (...)
  return(1)
}

输出:

DT_CAP_COLUMN(churn_3,churn_4,'VOICE_REVENUE','STD',3)
input_table$column_name is NA

我认为问题在于无法识别input_table$column_nameinput_tablechurn_3input_table$column_name 返回 column_name not found

有没有办法做到这一点而不必使用传递引用包或将环境作为变量传递?

【问题讨论】:

  • @Kevin 好地方。投票结束。
  • 只是因为我有同样的问题...
  • 无需对受骗者投反对票,尤其是对于新用户而言。

标签: function r pass-by-reference


【解决方案1】:

您可以使用方括号索引间接引用 data.frame 中的列:

样本数据:

 dat <- data.frame(
     a = letters[1:3],
     b = LETTERS[4:6],
     c = 7:9
 )

功能:

 my.function <- function(data, col){
   data[, col]
 }

结果:

>  my.function(dat, "b" )
  b
1 D
2 E
3 F
>  my.function(dat, "c" )
  c
1 7
2 8
3 9

【讨论】:

  • 谢谢一百万。使用列号和列名完全按照我的意愿工作。
猜你喜欢
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 2020-09-12
相关资源
最近更新 更多