R 中的函数,传递数据框和列名

发布于 2024-12-03 01:38:58 字数 786 浏览 0 评论 0原文

可能的重复:
将 data.frame 列名称传递给函数

我正在尝试在 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_name 无法识别。 input_tablechurn_3,但 input_table$column_name 返回 column_name not found

无论如何,是否可以在不必使用传递引用包或将环境作为变量传递的情况下执行此操作?

Possible Duplicate:
Pass a data.frame column name to a function

I am trying to create a function in R where between the inputs there is dataframe and a column name. The code would be something like this:

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

Output:

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

I think the problem is that input_table$column_name is not recognized. input_table is churn_3 but input_table$column_name returns column_name not found.

Is there anyway to do this without having to use pass-by-references packages or passing environments as variables?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

莫相离 2024-12-10 01:38:58

您可以使用方括号索引间接引用 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

You can indirectly reference a column in a data.frame by using square bracket indexing:

Sample data:

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

Function:

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

Results:

>  my.function(dat, "b" )
  b
1 D
2 E
3 F
>  my.function(dat, "c" )
  c
1 7
2 8
3 9
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文