我有一个尴尬的问题,当通过它在 R 中执行特定的 powershell 命令(调用位于 ~/WindowsPowerShell/Modules/ 中的 powershell 模块)时,system2(command = 'powershell', args = someStringVariable)
它只会返回“127”。
其他更简单的模块调用设法产生结果。但是一旦三个参数之一(即 [MDX] 查询变得有点复杂)或达到一定的长度/大小,它就会返回“127”。
真正的错误似乎是简单查询和复杂查询都可以分别通过复制/粘贴移回和第四个普通 Powershell ISE 窗口readClipboard()
(writeClipboard()
使用后一个 R 函数来避免 STRG+C 和/或 STRG+ V 用于移动更简单的模块调用参数,在 R 中正确工作,从 R 到 powershell 相同),这些将产生正确的结果(即编写结果文件)。
所以我的问题是:
- 有没有人在 system2 和 powershell 上遇到过类似的行为
- system2 中的 args 长度是否有任何我不知道的限制?
- 这可能是版本问题(在 powershell 和 R 之间)
操作系统:WINDOWS 10 企业版 1803
其他系统信息:Powershell 版本:$PSVersionTable.PSVersion = 5.1.17134(修订版 765)
版本:
platform i386-w64-mingw32
arch i386
os mingw32
system i386, mingw32
status
major 3
minor 4.2
year 2017
month 09
day 28
svn rev 73368
language R
version.string R version 3.4.2 (2017-09-28)
nickname Short Summer
希望有人有有用的经验分享...
当在不同的机器上运行相同的功能时,这个案例变得更加奇怪,唯一显着的区别是一些包版本,一切都像一个魅力。
这是不同的librarz版本的列表。但是我永远不会期望库上的版本差异可以或应该有任何影响,system2
因为这是基本包的一部分。Version.x
是我机器上的pkg版本,Version.y
是机器上的版本,system2
运行顺畅,这里没有显示相同的版本。
Package Version.x Version.y identical
6 assertthat 0.2.1 0.2.0 FALSE
7 backports 1.1.4 1.1.1 FALSE
13 BH 1.69.0-1 1.65.0-1 FALSE
16 boot 1.3-22 1.3-20 FALSE
20 caTools 1.17.1.1 1.17.1 FALSE
27 codetools 0.2-16 0.2-15 FALSE
28 colorspace 1.4-1 1.3-2 FALSE
36 data.table 1.12.2 1.10.4-3 FALSE
38 DBI 1.0.0 0.7 FALSE
42 digest 0.6.18 0.6.12 FALSE
47 dplyr 0.8.3 0.7.4 FALSE
51 evaluate 0.14 0.10.1 FALSE
63 forecast 8.7 8.2 FALSE
64 foreign 0.8-71 0.8-69 FALSE
65 formatR 1.6 1.5 FALSE
66 Formula 1.2-3 1.2-2 FALSE
70 ggplot2 3.2.0 2.2.1 FALSE
81 gtable 0.3.0 0.2.0 FALSE
83 highr 0.8 0.6 FALSE
90 httr 1.4.0 1.3.1 FALSE
91 httr 1.4.0 1.3.1 FALSE
93 jsonlite 1.6 1.5 FALSE
95 knitr 1.23 1.17 FALSE
98 lattice 0.20-38 0.20-35 FALSE
100 lazyeval 0.2.2 0.2.1 FALSE
102 lme4 1.1-21 1.1-14 FALSE
103 lmtest 0.9-37 0.9-35 FALSE
106 markdown 1.0 0.8 FALSE
107 MASS 7.3-51.4 7.3-47 FALSE
114 mgcv 1.8-28 1.8-20 FALSE
115 mime 0.7 0.5 FALSE
122 munsell 0.5.0 0.4.3 FALSE
124 nlme 3.1-140 3.1-131 FALSE
128 openssl 1.3 0.9.9 FALSE
135 plogr 0.2.0 0.1-1 FALSE
142 quadprog 1.5-7 1.5-5 FALSE
143 quantreg 5.41 5.34 FALSE
147 R6 2.4.0 2.2.2 FALSE
151 Rcpp 1.0.1 0.12.14 FALSE
160 reshape2 1.4.3 1.4.2 FALSE
162 rlang 0.4.0 0.3.99.9003 FALSE
169 rstudioapi 0.10 0.7 FALSE
171 sandwich 2.5-1 2.4-0 FALSE
172 scales 1.0.0 0.5.0 FALSE
175 shiny 1.3.2 1.0.5 FALSE
177 sourcetools 0.1.7 0.1.6 FALSE
188 stringi 1.4.3 1.1.6 FALSE
189 stringr 1.4.0 1.2.0 FALSE
199 tibble 2.1.3 1.3.4 FALSE
200 timeDate 3043.102 3042.101 FALSE
206 tseries 0.10-47 0.10-42 FALSE
207 TTR 0.23-4 0.23-2 FALSE
213 viridisLite 0.3.0 0.2.0 FALSE
215 withr 2.1.2 2.1.0 FALSE
216 XML 3.98-1.19 3.98-1.9 FALSE
218 xtable 1.8-4 1.8-2 FALSE
219 xts 0.11-2 0.10-0 FALSE
220 yaml 2.2.0 2.1.14 FALSE
221 zoo 1.8-6 1.8-0 FALSE
我得出的结论是这是一个 RStudio 错误 - 另一个奇怪的功能,例如这个命令,当 R 在终端中启动但不在 RStudios 控制台中时,它将在 RStudios 终端中运行。
system2("powershell", args = "Con-XLCube 'Data source=https://someCubeServer/connection/string.dll;Provider=MSOLAP;Initial Catalog=Database;' 'Select Non Empty {[Measures].[Amount]} On Columns, Non Empty ( AddCalculatedMembers ( {[Account].[Account Type].[Account Type].Members} ) * ( ( { [Account].[SAP Account Number].&[1730001202],[Account].[SAP Account Number].&[4917324009],[Account].[SAP Account Number].&[4917325006],[Account].[SAP Account Number].&[4917399001],[Account].[SAP Account Number].&[5977300003],[Account].[SAP Account Number].&[4977300006]} * ( AddCalculatedMembers ( {[Account].[SAP Description Long].[SAP Description Long].Members} ) * ( AddCalculatedMembers ( {[Folder].[Folders Short Name].[Folders Short Name].Members} ) * ( AddCalculatedMembers ( {[Counterparty].[Full Name].[Full Name].Members} ) * ( AddCalculatedMembers ( {[Account].[Legal Entity Partner Code].[Legal Entity Partner Code].Members} ) * ( AddCalculatedMembers ( {[Trade].[Bundle Id].[Bundle Id].Members} ) * ( AddCalculatedMembers ( {[Trade].[EMIR One Confirmation].[EMIR One Confirmation].Members} ) * ( AddCalculatedMembers ( {[Trade].[Internal Reference].[Internal Reference].Members} ) * ( AddCalculatedMembers ( {[Trade].[Trade Id].[Trade Id].Members} ) * ( AddCalculatedMembers ( {[Product].[Product Type].[Product Type].Members} ) * ( AddCalculatedMembers ( {[Product].[EG Product Type].[EG Product Type].Members} ) * ( AddCalculatedMembers ( {[Product].[Product Currency].[Product Currency].Members} ) * ( AddCalculatedMembers ( {[Product].[Product Currency2].[Product Currency2].Members} ) * ( Except ( AddCalculatedMembers ( {[Accounting Event].[Accounting Event Type].[Accounting Event Type].Members} ) , {[Accounting Event].[Accounting Event Type].&[CLOSING]} ) * AddCalculatedMembers ( {[Currency].[Currency].[Currency].Members} ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) On Rows From [Postings] Where ([Processing Org].[Mandant].&[104],[Account].[Standard].&[IFRS],[Booking Date].[Booking Day].&[20190628],[Currency Translation Date].[Day].&[20190628],[Cumulation Type].[Cumulation Type].&[1],[Posting Status].[Posting Status].&[SENT]) Cell Properties VALUE' 'C:\\Users\\USERID\\AppData\\Local\\Temp\\RtmpY9VjYM\\Test.csv'")
我还注意到,当命令在 RStudio 终端窗口中运行时,powershell 消息“正在搜索可用模块”会闪烁(不知何故在其中/在其中)。这可能是干扰 RStudio 控制台但不干扰 RGui 和终端 R 的某个进程吗?如果是这样,为什么它不干扰另一台机器(“y”)?是否有一些 Powershell 设置我丢失或忘记在机器“x”上设置或设置错误?