2017-01-27 7 views
0

Rコードファイルを変数に対してRデータフレーム列に格納したい。私のデータフレームは、次のようになります。データフレーム列にコード(.Rファイル)を格納することはできますか?

metadatatable1:

tablename variable  applicableRcode 
table1  address_key  code1.r   
table1  address_key  code2.r   
table1  zipcode   code2.r   
table2  address_key  code3.r   

データフレーム - TABLE1とtable2の:

TABLE1

address_key zipcode 
234567  560100 
123456  560100 
453678  560100 

table2の

address_key 
54274238 
58375235 

はそれが可能トンですo rコードファイルをデータフレーム列の値として追加し、同じコードを実行して以下の出力を取得しますか?

tablename variable  applicableRcode rcodeOutput 
table1  address_key  code1.r   98.5 
table1  address_key  code2.r   67.2 
table1  zipcode   code2.r   100.0 
table2  address_key  code3.r   22.8 

私は、変数をハードコーディングすることはできません、私は、このメタデータテーブルから変数を引き、それが属するテーブルからの変数の値を取得し、私の出力を得るために、メタデータで指定されたルールを適用する必要があります。

事前に感謝します。ここで

+0

ファイルの*名前*を保存できます。どのようにそれを "実行"したいですか? 'source(" myfunction.R ")'と同じように?それでは、どのように出力を取り戻すのですか? – Spacedman

+0

それは@Spacedmanの問題です。変数に対してRコードファイルの名前を格納し、その変数に対してコードを実行することができれば、結果を各変数とは異なるデータフレームに格納し、sqldfを使用して再結合します。可能でしょうか?どうやってするの ? –

+0

指定したすべてのファイルが入力と出力の変数が同じであることを確認し、環境内で定義された変数を使用してソースを実行し、結果値を取得します。 – Spacedman

答えて

0

in1という変数を取り、outでその答えを格納するすべてのワンライナーのRコードである3つのファイル、F1、F2とF3、です:

f1.R 
:::::::::::::: 
out = sqrt(in1) 
:::::::::::::: 
f2.R 
:::::::::::::: 
out = in1*in1 
:::::::::::::: 
f3.R 
:::::::::::::: 
out = in1 * sqrt(in1) 

ここではデータフレームです:

は、

> lapply(1:nrow(d),function(i){in1=d[i,"in1"];source(d[i,"f"],local=TRUE);out}) 
[[1]] 
[1] 1 

[[2]] 
[1] 1.414214 

[[3]] 
[1] 5.196152 

[[4]] 
[1] 8 

[[5]] 
[1] 25 
> d = data.frame(in1 = c(1,2,3,4,5), f = c("f2.R","f1.R","f3.R","f3.R","f2.R"),stringsAsFactors=FALSE) 
> d 
    in1 f 
1 1 f2.R 
2 2 f1.R 
3 3 f3.R 
4 4 f3.R 
5 5 f2.R 

そして、ここではそのデータフレームをループと呼んでsource今です

あなた自身で出力を整えることができますし、あなたが望むことは何でもできますが、あなたがしようとしているような基本的な原則は上記に含まれています。

+0

私はそれを試しました。私は解決策が完璧であることに同意します。しかし、私はここではるかに複雑な状況があります。あなたは助けることができますか?私は状況に応じて私の質問を編集しています。 –

+0

こんにちは@Spacedman、助けてくれてありがとう、私は私の質問を更新しました。 –

+0

@DebanjanGhosal私が正しいとすれば、あなたの更新された質問では、単に変数を使って新しい変数rcodeouputを作成する必要があります。 'metadatatable1 $ rcodeOutput < - sapply(metadatatable1 $ applicableRcode、function(scripts)source(scripts))'の行に何かがあります。引数として 'variable'カラムの名前を使用する必要がある場合は、行数をインデックスし、それぞれをループします。 – cimentadaj

関連する問題