2017-01-11 20 views
0

に読み込む方法hereと同様の質問がありましたが、hereというソートが見つかりました。rpy2を使ってRとpythonを結合する方法:PythonリストをR

私はPythonで浮動小数点数のリストを持っています(実際には、各リストは約1,000浮動小数点数です)。例えば各リストについて

[0.01,0.02,0.03,0.04,0.05] 
[0.1,0.2,0.4,0.5,0.6,0.7] 
[0.01,0.2,0.05,0.4] 

、私は、RリストにPythonのリストに変換するQ値のリストを取得するにはRリストにFDRのテストを実行し、バックにQ値のRのリストを変換したいですPythonのリストを作成し、スクリプトを続けます。

私が持っているコード:

for each_list in SetOfLists: 
    ro.r("library('devtools')") #load necessary package for task 
    ro.r("library('qvalue')") #load necessary package for task 
    pvals = ro.FloatVector(each_list) #explain that each list is a set of floats 
    print ro.r("qobj <-qvalue(p=" + pvals + ")") #run the r function on each list 
    #ro.r("qobj$lfdr") #get the FDR values from the R output                                     
    #Then convert this list of FDR values back to python 

私はこの回線に問題抱えている:私はそのラインを作る場合、例えば、

print ro.r("qobj <-qvalue(p=" + pvals + ")") 

を:

print ro.r("qobj <-qvalue(p=" + pvals + ")") 

エラー:

私はわずかにラインを変更した場合は3210

print ro.r("qobj <-qvalue(p= pvals)") 

エラーは次のとおりです。

res = super(Function, self).__call__(*new_args, **new_kwargs) 
Traceback (most recent call last): 
    File "CalculateFDR.py", line 33, in <module> 
    print ro.r("qobj <-qvalue(p=pvals)") 
    File "/home/nis/aoife/env/local/lib/python2.7/site-packages/rpy2/robjects/__init__.py", line 321, in __call__ 
    res = self.eval(p) 
    File "/home/nis/aoife/env/local/lib/python2.7/site-packages/rpy2/robjects/functions.py", line 178, in __call__ 
    return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs) 
    File "/home/nis/aoife/env/local/lib/python2.7/site-packages/rpy2/robjects/functions.py", line 106, in __call__ 
    res = super(Function, self).__call__(*new_args, **new_kwargs) 
rpy2.rinterface.RRuntimeError: Error in qvalue(p = pvals) : object 'pvals' not found 

私はこの問題は、私がきちんとRリストにPythonのリストを変換していないよ知っている、私はこれを正しく行う方法がわかりません。したがってアドバイスをいただければ幸いです。

答えて

0

念のために、これは他の誰を助け、答えは次のとおりです。

devtools = importr("devtools") 
qvalue = importr("qvalue") 

for each_list in SetOfLists: 
    pvals = ro.FloatVector(v) 
    rcode = 'qobj <-qvalue(p=%s)' %(pvals.r_repr()) 
    res = ro.r(rcode) 
    r_output1 = 'qobj$pvalue' 
    r_output2 = 'qobj$qvalue' 
    r_pvalue = ro.r(r_output1) 
    r_qvalue = ro.r(r_output2) 
    DictOfValues = dict(zip(r_pvalue,r_qvalue)) 

これはR.

にPythonのリストを取得するためのコードです
関連する問題