1

SQL テーブルから読み取った文字列に基づいて、データフレームに新しい変数を作成する関数を作成したいと考えています。この関数は と の 2 つの引数を取りdf、余分な列が追加されてstr返されます。はの列、は の列のセット、は変換関数です。dfstr"a = f(B)"adfBdff

例:

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

私が欲しいのは ですが、文字列を (文字型の変数として) の引数transform(df, Week = ceiling(Day / 7))に渡す方法がわかりません。"Week = ceiling(Day / 7)"...transform

parseとのさまざまな組み合わせを試しましevalたが、文字オブジェクトを R のドキュメントで「タグ付きベクトル式」と記述されているものに変更する方法がわかりません。

4

2 に答える 2

2

1 つの方法を次に示します。

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 に答える