传递一个字符串作为转换的第二个参数

时间:2012-11-12 23:22:47

标签: r transform

我想编写一个函数,根据从SQL表中读取的字符串在数据框中创建新变量。该函数应该使用两个参数dfstr,并返回df并附加一个额外的列。 str将是"a = f(B)"形式的字符串,其中adf的列,B是一组df列,而f是转换函数。

示例:

df <- data.frame(EventID = c(111,112,113), Day = c(6,8,15))

我想要的是transform(df, Week = ceiling(Day / 7)),但我无法弄清楚如何将字符串"Week = ceiling(Day / 7)"(作为字符类型的变量)传递给{{1}的...参数}}

我尝试了transformparse的各种组合,但我无法弄清楚如何将字符对象更改为R文档描述为“标记的矢量表达式”。< / p>

2 个答案:

答案 0 :(得分:2)

这是一种方式:

fun <- function(df, str.expression) within(df, eval(parse(text=str.expression)))

fun(df, "Week = ceiling(Day / 7)")
#   EventID Day Week
# 1     111   6    1
# 2     112   8    2
# 3     113  15    3

答案 1 :(得分:0)

快速计算出来,但我仍然会分享:eval(parse())整个事情!

eval(parse(text = paste("transform(df,", str, ")", sep = "")))

那就是说,我更喜欢@ flodel的答案。