【问题标题】:Use character String as function argument R使用字符串作为函数参数 R
【发布时间】:2016-08-17 06:13:05
【问题描述】:

我已经浪费了很多时间,但我没有得到它。

是否可以在函数中使用字符串作为参数?

我的字符串定义为:

mergesetting <- "all = FALSE"

(有时我使用“all.y = TRUE”或“all.x = TRUE”代替)

我尝试将该字符串设置为以下函数的参数:

merged = merge.data.frame(x = DataframeA ,y = DataframeB ,by = "date_new", mergesetting )

但我收到一条错误消息:fix.by(by.x, x) 中的错误

如果我直接使用参数,该函数确实有效:

merged = merge.data.frame(x = DataframeA,y = DataframeB,by = "date_new", all = FALSE )

以及在Use character string as function argument 上找到的其他两种方法 没用:

  L<- list(x = DataframeA,y = DataframeB,by = "date_new", mergesetting)
  merged <- do.call(merge.data.frame, L)

非常感谢任何帮助。

【问题讨论】:

标签: r string function arguments character


【解决方案1】:

不确定重点,但是, 如果您有一个包含数据和参数的列表

说 dfA 是这个数据框 kable(head(dfA)) |dates | datum| |:----------|-----:| |2010-05-11 | 1130| |2010-05-12 | 1558| |2010-05-13 | 1126| |2010-05-14 | 131| |2010-05-15 | 2223| |2010-05-16 | 4005|

dfB 是这个...

kable(head(dfB)) |dates | datum| |:----------|-----:| |2010-05-11 | 3256| |2010-05-12 | 50| |2010-05-13 | 2280| |2010-05-14 | 4981| |2010-05-15 | 2117| |2010-05-16 | 791|

您的预设清单:

arg.li &lt;- list(dfA = dfA,dfB = dfB,all = T,by = 'dates')

列表函数的包装器...

f &lt;- function(x)do.call('merge.data.frame',list(x = x$dfA,y = x$dfB,all = x$all))

结果:

kable(summary(f(arg.li))) | | dates | datum | |:--|:------------------|:------------| | |Min. :2010-05-11 |Min. : 24 | | |1st Qu.:2010-09-03 |1st Qu.:1288 | | |Median :2010-12-28 |Median :2520 | | |Mean :2011-01-09 |Mean :2536 | | |3rd Qu.:2011-04-22 |3rd Qu.:3785 | | |Max. :2011-12-01 |Max. :5000 |

【讨论】: