gpt4 book ai didi

r - 将字符列表作为参数传递给 VBA 中的 RScript?

转载 作者:行者123 更新时间:2023-12-04 10:55:45 25 4
gpt4 key购买 nike

我有一个运行良好的 R 脚本,其中一个变量被设置为:

Benchmark <- c("Bench1","Bench2","Bench3","Bench4","Bench5","Bench6")

Benchmark
[1] "Bench1" "Bench2" "Bench3" "Bench4" "Bench5" "Bench6"

稍后在代码中,如果其中一列在 Benchmark 中存在值,我会检查表:
CollStruc <- CollStruc[CollStruc$Designer %in% Benchmark,]

到那里为止,没有问题。这里的问题是我想从 VBA 调用 Rscript,这要归功于以下代码:

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

'Paramètres à passer à R
Dim CheminR As String, Benchmark As String

NbBench = WSExec.Range("C16").End(xlDown).Row - WSExec.Range("C16").Row

Benchmark = """" & WSExec.Range("C16").Value & """"
For i = 1 To NbBench
Benchmark = Benchmark & "," & """" & WSExec.Range("C16").Offset(i, 0).Value & """"
Next i

Dim path As String
path = "RScript \\Tagwalk-nas\public\R-Scripts\Brand_Equity-Benchmark-parameters.R " & Benchmark

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

我一直在 RScript 中使用以下行传递参数:
args <- commandArgs(trailingOnly=T)
Benchmark <- c(args[1])

这就是事情出错的地方。我的 Benchmark 变量看起来不像我期望的那样,因此其余代码返回错误

Benchmark "1" "Bench1,Bench2,Bench3,Bench4,Bench5,Bench6"



你知道我怎样才能做到这一点吗?
谢谢

编辑 :
感谢亚当和冻糕的帮助。

在 VBA 中创建的变量 Benchmark 现在看起来像这样:
print.debug(Benchmark)
"Bench1,Bench2,Bench3,Bench4,Bench5,Bench6"

我试过按照亚当的建议使用 unlist ,它似乎按照我的意愿转换了变量。
这是我在 R 中使用时的变量:
str(Benchmark)
chr [1:6] "gucci" "louis-vuitton" "chanel" "christian-dior" "prada" "fendi"

这是 sink() 提供的输出我在放 str(Benchmark) 时得到在我从 VBA 执行的 Rscript 中:
 chr [1:6] "gucci" "louis-vuitton" "chanel" "christian-dior" "prada" ...

最佳答案

您正在传递一个逗号分隔的列表。我无法复制您的项目,因此这将是部分答案。

一旦您拥有 Benchmark <- "Bench1,Bench2,Bench3,Bench4,Bench5,Bench6"问题变得很容易。在您尝试运行脚本后,我无法从您的问题中得知 Benchmark 的结构是什么。所以你可能需要清理它或 unlist()在你准备好之前。

然后,

args <- commandArgs(trailingOnly=TRUE)

Benchmark <- unlist(strsplit(args[1],","))
#[1] "Bench1" "Bench2" "Bench3" "Bench4" "Bench5" "Bench6"

关于r - 将字符列表作为参数传递给 VBA 中的 RScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59214896/

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