【问题标题】:Gdata package perl issueGdata包perl问题
【发布时间】:2012-06-12 00:05:50
【问题描述】:

我正在尝试按照这个简单的 2 分钟视频教程将 Excel 电子表格作为数据框导入 R:http://www.screenr.com/QiN8

我遵循了每个步骤,包括在我的 Win 7 PC 上下载和安装 Strawberry Perl(32 位),将 R 指向我的工作目录,然后在 R 中输入以下命令:

Spreadsheet <- read.xls("targetspreadsheet.xls")

我收到此错误:

findPerl 中的错误(详细 = 详细): 找不到 perl 可执行文件。使用 perl= 参数来指定正确的路径。 file.exists(tfn) 中的错误:“文件”参数无效

更新:

我重置了我的机器并将路径设置为 Perl:

perl <- "C:/strawberry/perl/bin/perl.exe"

然后我输入了这个命令:

DF <- read.xls("spreadsheet.xls", perl = perl)

命令行返回此错误:

xls2sep 中的错误(xls, sheet, verbose = verbose, ..., method = method, : 缺少中间文件“C:\Users\AEID\AppData\Local\Temp\RtmpoXMywa\file18e45ed513c.csv”! 另外:警告信息: 运行命令 '"C:\STRAWB~1\perl\bin\perl.exe" "C:/Users/AEID/Documents/R/win-library/2.15/gdata/perl/xls2csv.pl" "GFT_show_wip_report(42) .xls" "C:\Users\AEID\AppData\Local\Temp\RtmpoXMywa\file18e45ed513c.csv" "1"' 状态为 2 file.exists(tfn) 中的错误:“文件”参数无效

我做错了什么?

提前感谢您的帮助!

AME

【问题讨论】:

  • Perl 必须在您的PATH 上。在命令提示符下检查PATH,如果自安装 Perl 后没有重新启动 R,请重新启动它。
  • @mob - 你能详细说明我如何检查 PATH 吗?
  • 安装 perl 后你是否重启过机器?
  • 待命。我正在向 YouTube 上传一段 90 秒的视频,介绍如何在 Windows 7 上检查 PATH。
  • 要么确保 perl 在你的路径上,要么使用 perl= 参数告诉它 perl 的位置。例如perl &lt;- "C:/Perl/bin/perl.exe"; DF &lt;- read.xls("myfile.xls", perl = perl) 。根据您实际安装 perl 的位置进行修改。

标签: perl excel r


【解决方案1】:

我也遇到了同样的问题,并且已经与“xls2sep 中的错误”斗争了 1 个小时。 重新安装草莓,不行。

我终于发现excel文件坏了。 “xls2sep 中的错误”似乎意味着文件已损坏。

【讨论】:

    【解决方案2】:

    使用library(gdata) 加载gdata 包后,它清楚地说:

    gdata:read.xls() 将无法读取 Excel XLS 和 XLSX 文件 gdata:除非 'perl=' 参数用于指定 一个 gdata:有效的 perl 解释器。

    因此,您需要有效的 perl 解释器的 PATH。 使用 windows,就像这里的情况一样,您需要检查属性以找到所需的 perl 解释器。

    #set the PATH to perl interpreter
    perl <- "C:/strawberry/perl/bin/perl5.18.2.exe"
    
    try1file <- read.xls("my.one.filename.xls", perl = perl)
    

    对于多个 xls 文件:

    > length(list.files())
    [1] 65
    
    try65files <- lapply(list.files(), ..., perl = perl) 
    

    如果verbose = TRUE,则在每个文件的末尾会显示:

    Loading 'F65.xls'...
    Done.
    Orignal Filename: F65.xls
    Number of Sheets: 1
    Writing sheet number 1 ('Sheet1') to file 'C:\Users\FRANKL~1.JOH\AppData\Local\Temp\RtmpeKs3fi\file13dc750950e4.csv'
    Minrow=0 Maxrow=32 Mincol=0 Maxcol=16
      (Ignored 0 blank lines.)
    0 
    Done.
    Reading csv file  “C:\Users\FRANKL~1.JOH\AppData\Local\Temp\RtmpeKs3fi\file13dc750950e4.csv” ...
    Done.
    

    【讨论】:

    • 我想指出,@Igor Krupitsky 提供了一种指向有效 perl 解释器的永久方式,而不是每次需要导入 excel 文件时都指定它。请参阅下面的答案。我会编辑这个答案添加这个
    【解决方案3】:

    你可以试试这个语法:

    T<-read.xls("Template.xlsx", perl = "C:\\Perl\\bin\\perl.exe")
    

    我在这里找到了这个解决方案

    http://cran.r-project.org/web/packages/gdata/INSTALL

    【讨论】:

      【解决方案4】:

      我自己遇到了这个问题,终于找到了罪魁祸首。在我的初始代码中,我正在处理一个有 4 张纸的 excel 文件,并且在第 4 张纸上进行操作- read.xls(con, perl=prl, sheet=4)。我的新 xlxs 文件有一张,导致错误。

      【讨论】:

        【解决方案5】:

        正如其他一些答案所说,问题是缺少 perl.exe。就我而言,它在从以下位置安装后起作用: http://www.activestate.com/activeperl/downloads 然后指向它:

            read.xls("bla.xlsx", perl = "C:\\Perl64\\bin\\perl.exe")
        

        【讨论】:

          【解决方案6】:

          R 正在搜索 xls 或 xlsx 文件,但没有找到。因此,设置您的 Excel 文件所在的工作目录(例如setwd("C:\...."))并运行以下任何脚本格式:

          read.xls("Potato.xls", perl = "C:\\Strawberry\\perl\\bin\\perl.exe")
          read.xls("Tomato.xls", perl = "C:\\Strawberry\\perl\\bin\\perl.exe")
          read.xls("Potato.xlsx", perl = "C:/Strawberry/perl/bin/perl.exe")
          read.xls("Tomato.xlsx", perl = "C:/Strawberry/perl/bin/perl.exe")
          

          【讨论】:

            【解决方案7】:

            确保您的路径变量未命名为“perl”。我将其重命名为 prl 并成功!

            这不起作用:

            perl <- "C:/Strawberry/perl/bin/perl.exe"
            excel_gdata <- read.xls(url_xls, perl)
            
            Error in findPerl(verbose = verbose) : 
              perl executable not found. Use perl= argument to specify the correct path.
            Error in file.exists(tfn) : invalid 'file' argument
            

            这行得通!

            prl <- "C:/Strawberry/perl/bin/perl.exe"
            excel_gdata <- read.xls(url_xls, prl)
            

            【讨论】:

              【解决方案8】:

              在我运行以下脚本并重新启动 PC 后,问题就消失了:

              library(gdata)
              installXLSXsupport(perl = 'C:\\strawberry\\perl\\bin\\perl.exe')
              

              【讨论】:

                【解决方案9】:

                就我而言,我收到了类似的消息:

                Error in xls2sep(xls, sheet, verbose = verbose, ..., method = method,  : 
                  Intermediate file 'C:\Users\dddd\AppData\Local\Temp\Rtmp6DG4Cr\file1ce018647411.csv' missing!
                In addition: Warning message:
                running command '"C:\Perl64\bin\PERL52~1.EXE" "C:/Users/dddd/Documents/R/win-library/3.4/gdata/perl/xls2csv.pl"  "D:/dddd/mlj/Results/xxxx.xlsx" "C:\Users\dddd\AppData\Local\Temp\Rtmp6DG4Cr\file1ce018647411.csv" "1"' had status 13 
                Error in file.exists(tfn) : invalid 'file' argument
                

                我通过关闭Excel表格想出了解决办法,Excel和R不能同时打开。

                【讨论】:

                  【解决方案10】:

                  我最近在Windows 10下使用gdata包和Strawberry Perl软件遇到了同样的问题。我的解决方案如下:(1)卸载旧版本的Strawberry Perl - 如果您尝试安装新版本超过旧版本,它说它不可升级,(2)安装从link下载到C:/Strawberry/的新版本,(3)将C:/Strawberry/perl/bin/perl.exe添加到环境的用户变量中的“路径”变量窗口。

                  【讨论】:

                    猜你喜欢
                    • 2011-08-14
                    • 1970-01-01
                    • 2014-06-17
                    • 2011-03-14
                    • 1970-01-01
                    • 2011-06-25
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-12-02
                    相关资源
                    最近更新 更多