1

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

例子:

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

我想要的是transform(df, Week = ceiling(Day / 7)),但我不知道如何将字符串"Week = ceiling(Day / 7)"(作为字符类型的变量)传递...transform.

我尝试了 和 的各种组合parseeval但我不知道如何将字符对象更改为 R 文档描述为“标记向量表达式”的内容。

4

2 回答 2

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
于 2012-11-12T23:32:29.500 回答
0

很快就弄清楚了,但我仍然会分享:eval(parse())整个事情!

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

也就是说,我更喜欢@flodel 的回答。

于 2012-11-12T23:39:19.873 回答