gpt4 book ai didi

r - 将变量从 VBA 传递到 R-Script

转载 作者:行者123 更新时间:2023-12-04 18:03:45 28 4
gpt4 key购买 nike

我目前正在研究连接 R 和 Excel 的接口(interface)。到目前为止,我能够通过 VBA 宏执行 R 程序。我使用了上给出的建议 http://shashiasrblog.blogspot.fr/2013/10/vba-front-end-for-r.html

由于我的 R 脚本调用外部 txt 文件,因此在更改相应文件的目录时最好不要手动更改 R 代码。所以问题是,是否可以将 VBA 脚本中的变量分配给 R

在指定网站的帮助下,我未能成功。有没有人遇到这个问题并且知道如何解决?您会在附件中找到我尝试从网站改编的代码示例。

问候,

大卫

 Sub RunRscript()
'runs an external R code through Shell
'The location of the RScript is 'C:\R_code'
'The script name is 'hello.R'
Dim shell As Object
Set shell = VBA.CreateObject("WScript.Shell")
Dim waitTillComplete As Boolean: waitTillComplete = True
Dim style As Integer: style = 1
Dim errorCode As Integer
Dim var1, var2 As Double
var1 = Tabelle1.Range("D5").Value
var2 = Tabelle1.Range("F5").Value

Dim path As String
path = "RScript C:\Users\David\Desktop\Test\test.R" & var1 & " " & var2

errorCode = shell.Run(path, style, waitTillComplete)

End Sub



args<-commandArgs(trailingOnly=T)
# cat(paste(args,collapse="\n"))
sink('C:/Users/David/Desktop/Test/test.R',append=F,type="output")

var1<-as.numeric(args[1])
var2<-as.numeric(args[2])

var1<-5
var2<-2
a<-var1+var2
write.table(a, file = "C:/Users/David/Desktop/bla.txt", sep = ",", col.names = NA,
qmethod = "double")
sink(NULL)

最佳答案

快到了。首先,您不需要 sink() 行,因为您没有写入任何文本文件,当然也不需要写入用于传递参数的 R 脚本。如果您在链接中看到,正在使用 sink()cat() 创建和更新文本文件。简单地说,删除你的 R 代码中的对,因为你不这样做。我相信您知道代码的底部应该在引用的 test.R 脚本中,而不是在 VBA 中。

其次,您需要在文件指定后的路径字符串中添加一个空格:

path = "RScript C:\Users\David\Desktop\Test\test.R " & var1 & " " & var2

path = "RScript C:\Users\David\Desktop\Test\test.R" & " " & var1 & " " & var2

最后,您覆盖参数值 var1var2。删除第二个变量声明以查看包含 Excel 数据的文本文件输出。

关于r - 将变量从 VBA 传递到 R-Script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30698929/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com