如何修复加载 gdata 包时 Perl 警告消息?

jay*_*.sf 5 windows perl xls r gdata

我已经更新了Strawberry Perl 64-bit 5.30.2001gdata。现在,加载时library(gdata)我总是收到此警告消息,这些消息似乎与 Perl 相关。

suppressPackageStartupMessages(library(gdata))
# Warning messages:
#   1: In system(cmd, intern = intern, wait = wait | intern, show.output.on.console = wait,  :
#     running command 'C:\Windows\system32\cmd.exe /c ftype perl' had status 2
#   2: In system(cmd, intern = intern, wait = wait | intern, show.output.on.console = wait,  :
#     running command 'C:\Windows\system32\cmd.exe /c ftype perl' had status 2
Run Code Online (Sandbox Code Playgroud)

然而,read.xls我需要的功能似乎运行良好,只是每次使用时都会重复出现警告。

read.xls("http://file-examples-com.github.io/uploads/2017/02/file_example_XLS_10.xls")
# trying URL 'http://file-examples-com.github.io/uploads/2017/02/file_example_XLS_10.xls'
# Content type 'application/vnd.ms-excel' length 8704 bytes
# downloaded 8704 bytes

#   X0 First.Name Last.Name Gender       Country Age       Date   Id
# 1  1      Dulce     Abril Female United States  32 15/10/2017 1562
# 2  2       Mara Hashimoto Female Great Britain  25 16/08/2016 1582
# 3  3     Philip      Gent   Male        France  36 21/05/2015 2587
# 4  4   Kathleen    Hanner Female United States  25 15/10/2017 3549
# 5  5    Nereida   Magwood Female United States  58 16/08/2016 2468
# 6  6     Gaston     Brumm   Male United States  24 21/05/2015 2554
# 7  7       Etta      Hurn Female Great Britain  56 15/10/2017 3598
# 8  8    Earlean    Melgar Female United States  27 16/08/2016 2456
# 9  9   Vincenza   Weiland Female United States  40 21/05/2015 6548
# Warning messages:
#   1: In system(cmd, intern = intern, wait = wait | intern, show.output.on.console = wait,  :
#     running command 'C:\Windows\system32\cmd.exe /c ftype perl' had status 2
#   2: In system(cmd, intern = intern, wait = wait | intern, show.output.on.console = wait,  :
#     running command 'C:\Windows\system32\cmd.exe /c ftype perl' had status 2
Run Code Online (Sandbox Code Playgroud)

我不知道如何处理这个警告,因为它对我什么也没说,我可能可以忽略它并围绕suppressWarnings()它。

尽管如此,有人知道解决这个问题的方法吗?我无法通过谷歌搜索找到任何东西,也不知道从哪里开始,也不知道到底出了什么问题。

> sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] gdata_2.18.0

loaded via a namespace (and not attached):
[1] compiler_4.0.2 tools_4.0.2    gtools_3.8.2  
Run Code Online (Sandbox Code Playgroud)

CL.*_*CL. 6

我在新安装的 R 版本gdata和 Strawberry Perl 中也遇到了同样的问题。我终于找到了另一个不同(但相关)问题的答案。根据那里的建议,我在提升的命令提示符上运行了以下命令:

\n
FTYPE perl=C:\\Strawberry\\perl\\bin\\perl.exe %1 %*\n
Run Code Online (Sandbox Code Playgroud)\n

这为我解决了 \xe2\x80\x93 的问题:我不确定这样的设置FTYPE是否会产生任何不需要的副作用。所以要小心。

\n
\n

更新:上面的命令确实抑制了警告“ftype perl\' has status 2”,但gdata仍然存在问题:

\n
\n

gdata:无法加载 read.xls()\ngdata 所需的 perl 库:支持 \'XLSX\' (Excel 2007+) 文件。

\n

gdata:运行函数 \'installXLSXsupport()\'\ngdata:自动下载并安装 perl\ngdata:支持 Excel XLS 和 XLSX 格式所需的库。

\n
\n

但是,installXLSXsupport()失败并出现不明确的错误消息。

\n

然后我跑了

\n
Sys.which("perl")\n                              perl \n"C:\\\\rtools40\\\\usr\\\\bin\\\\perl.exe" \n
Run Code Online (Sandbox Code Playgroud)\n

并意识到 RTools 中的 Perl 版本优先于我的 Strawberry Perl 安装 \xe2\x80\x93 并且显然gdata不“喜欢”那个 Perl 版本。

\n

.Renviron因此,我决定通过更改我的文件 ( )使 Strawberry Perl 优先于 RTools usethis::edit_r_environ()

\n
PATH="${RTOOLS40_HOME}\\usr\\bin;${PATH}" # old\nPATH="${PATH};${RTOOLS40_HOME}\\usr\\bin" # new\n
Run Code Online (Sandbox Code Playgroud)\n

再说一次,我不完全确定可能会产生什么后果,但它gdata为我解决了。\n也许单独调整PATH也可以达到目的(没有ftype我首先做的特技),但我不能再测试这个了。

\n

我的建议是:

\n
    \n
  1. 调整PATH第一个。
  2. \n
  3. 如果gdata仍然抱怨ftype,请设置ftype
  4. \n
\n