事前に感謝します。この質問が以前に回答されている場合は申し訳ありません-私はかなり広範囲に調べました。具体的には、名前、色コード、関数式など、連結された情報の行を含むデータセットがあります。たとえば、1 つの値は次のようになります。
cost#FF0033@log(x)+6.
情報を抽出するためのすべてのコードがあり、実際の関数のリストに変換したい式のベクトルが得られます。
例えば:
func.list <- list()
test.func <- c("x","x+1","x+2","x+3","x+4")
ここで、test.func は式のベクトルです。私が欲しいのは:
func.list[[3]]
に相当する
function(x){x+3}
以下を使用して関数を作成できることを知っています。
somefunc <- function(x){eval(parse(text="x+1"))}
文字値を関数に変換します。問題は、ループして複数の関数を作成しようとすると発生します。私が試したがうまくいかなかったものの例:
for(i in 1:length(test.func)){
temp <- test.func[i]
f <- assign(function(x){eval(expr=parse(text=temp))})
func.list[[i]] <- f
}
別の投稿(http://stats.stackexchange.com/questions/3836/how-to-create-a-vector-of-functions)に基づいて、これも試しました:
makefunc <- function(y){y;function(x){y}}
for(i in 1:length(test.func)){
func.list[[i]] <- assign(x=paste("f",i,sep=""),value=makefunc(eval(parse(text=test.func[i]))))
}
次のエラーが発生します: eval(expr、envir、enclos) のエラー: オブジェクト 'x' が見つかりません
最終的な目標は、関数のリストを取得し、j 番目の関数を data.frame の j 列に適用することです。これにより、スクリプトのユーザーは、列ヘッダーによって提供される連結された情報内の各列を正規化する方法を指定できます。