R& Python:如何使用字符串到达​​R

时间:2016-01-28 00:23:07

标签: python r rpy2

我目前正在使用Python和R(使用rmagic / rpy2)来帮助为特定类型的分析选择不同的用户输入变量。

我已经读过一个csv文件并在R中创建了一个数据框。我还做了一些允许用户输入一些变量,这些变量的名称必须与标题中的名称相匹配(使用Python)。

例如,如果我这样创建一个数据框

%R data1 <- read.csv(filename, header =T)

然后我有许多用户输入变量,这些变量当前是pythons中的字符串,看起来像这样。

var_1 = 'data1$age'
var_2 = 'data1$sex'

如何将此字符串用作R中的可运行代码,以便如下所示进入数据框的正确列:

%R variable1 <- data1$sex

目前我已尝试过分配功能和其他功能(据我所知,这可能与标记相差甚远),但我总是这样做:

%R -i var_1  assign('variable1', var_1)   
%R print(variable1)

"data1$age"

我知道我可以在R中分配值等但是我在质疑是否可以将字符串转换为可以进入data.frame的可运行的代码。

2 个答案:

答案 0 :(得分:1)

考虑让Python通过命令行将R脚本作为子进程调用,将字符串变量作为参数传递。在R中,使用双括号列引用来使用字符串:

Python 脚本(使用子流程模块)

import subprocess

var_1 = 'age' 
var_2 = 'sex'
Rfilename = '/path/to/SomeScript.R'

# BELOW ASSUMES RScript IS A SYSTEM PATH VARIABLE
p = subprocess.Popen(['RScript', Rfilename, var1, var2])

R 脚本

args <-commandArgs(trailingOnly=T)
var_1 <- as.character(args[1])
var_2 <- as.character(args[2])

data1 <- read.csv(filename, header =T)
variable1 <- data1[[var_1]]
variable2 <- data1[[var_2]]

答案 1 :(得分:0)

是的,有可能:

var_1 <- "head(iris$Species)"
eval(parse(text=var_1))
# [1] setosa setosa setosa setosa setosa setosa
# Levels: setosa versicolor virginica