将Ruby数组转换为R数组或向量

将Ruby数组转换为R数组或向量,ruby,arrays,r,quantmod,Ruby,Arrays,R,Quantmod,我在R中将Ruby数组转换为向量时遇到了问题 def self.risk_return_plot(stock_ticker = ["VZ", "CHU", "T", "VOD", "DTEGY"]) RSERVE.eval <<EOF myenv <- new.env() getSymbols("#{@stock_ticker}", env = myenv) monthly.Return <- do.call(merge, c(eapply(mye

我在R中将Ruby数组转换为向量时遇到了问题

def self.risk_return_plot(stock_ticker = ["VZ", "CHU", "T", "VOD", "DTEGY"])
   RSERVE.eval <<EOF
   myenv <- new.env()
   getSymbols("#{@stock_ticker}", env = myenv)
   monthly.Return <- do.call(merge, c(eapply(myenv, monthlyReturn), all=FALSE))
   names(monthly.Return)[1:ncol(monthly.Return)] <- paste("#{@stock_ticker}", 1:ncol(monthly.Return), sep="")
   EOF
end
def self.risk\u return\u plot(股票代码=[“VZ”、“CHU”、“T”、“VOD”、“DTEGY]”)

RSERVE.eval如果我理解了您的问题,您希望动态地创建一段代码,并在R服务器上执行它

您需要对代码进行一些修复:

def self.risk_return_plot(stock_ticker = ["VZ", "CHU", "T", "VOD", "DTEGY"])
   # creates a R vector version from stock_ticker array
   # enclose each item with " char, join with ',' and enclose all with c()
   r_vector = "c(#{stock_ticker.map() {|item| "\"#{item}\""}.join(',')})"
   # send R command string to the server
   RSERVE.eval <<-EOF
   myenv <- new.env()
   getSymbols(#{r_vector}, env = myenv)
   monthly.Return <- do.call(merge, c(eapply(myenv, monthlyReturn), all=FALSE))
   names(monthly.Return)[1:ncol(monthly.Return)] <- paste(#{r_vector}, 1:ncol(monthly.Return), sep="")
   EOF
end
def self.risk\u return\u plot(股票代码=[“VZ”、“CHU”、“T”、“VOD”、“DTEGY]”)
#从股票代码数组创建R向量版本
#用“char,join with.”括起每个项目,用c()括起所有项目
r#u vector=“c(#{stock\u ticker.map(){124; item |“\”{item}\”}.join(',)})”
#将R命令字符串发送到服务器

RSERVE.eval我不明白你的问题。你用Ruby定义了一个数组?并且试图用R来读取它?那么,中间步骤是什么?你是否将数组写入一个文件以供R读取?困惑不解。你在用?是的。我使用了Rinruby和R.eval@SlowLearner我只是更新了代码和问题。我运行这个,它仍然显示一个错误:RinRuby::ParseError:eval:getSymbols(“c(“VZ”、“CHU”、“T”、“VOD”、“DTEGY”)”,env=myenv)上的解析错误,我们需要删除c(“VZ”、“CHU”、“T”、“VOD”、“DTEGY”)之外的“”。我忘了删除。现在可以了。