我已经失去了很多时间,但我没有得到它。
是否可以在函数中使用String作为参数?
我的字符串被定义为:
mergesetting <- "all = FALSE"
(有时我使用&#34; all.y = TRUE&#34;或&#34; all.x = TRUE&#34;相反)
我尝试将String作为参数设置为以下函数:
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)
非常感谢任何帮助。
答案 0 :(得分:0)
不确定要点,但是, 如果你有一个包含数据和参数的列表
说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 <- list(dfA = dfA,dfB = dfB,all = T,by = 'dates')
列表函数的包装器......
f <- 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 |