R openxlsx:read.xlsx如果工作表名称包含“&”则会引发错误字符

时间:2017-03-30 16:46:25

标签: r xlsx

  1. 创建一个<Link />文件,其中包含三张名为“Test 1”,“S&amp; P500 TR”和“SP500 TR”的表格。在每张表中放入一些随机内容,并将其另存为“Book1.xlsx”。

  2. 执行命令

    .xlsx
  3. 现在尝试:

    > a <- getSheetNames("Book1.xlsx")
    > a
    [1] "Test 1"    "S&P500 TR" "SP500 TR"
    

3 个答案:

答案 0 :(得分:0)

首先检查您是否实际输入了名称S&P500 TR,而不是使用会更改任何内容的a[2]

或者,您可以使用readxl包进行导入;

  library(readxl)

  X1 <- read_excel("C:/1.xls", sheet = "S&P500 TR")

这是我的电子表格,它是导入后的结果;

 head(X1)
  # A tibble: 6 × 4
  #   Year Month     Community                      ` Average Daily`
  #  <dbl> <chr>         <chr>                             <dbl>
  # 1  2016   Jan     Arlington                              5.35
  # 2  2016   Jan       Ashland                              1.26
  # 3  2016   Jan       Bedford                              2.62
  # 4  2016   Jan       Belmont                              3.03
  # 5  2016   Jan Boston (BWSC)                             84.89
  # 6  2016   Jan     Braintree                              8.16

答案 1 :(得分:0)

我遇到了同样的问题,但找到了解决方法。首先使用read.xlsx()加载工作簿。然后重命名有问题的工作表以避免使用&符号。要修复示例中的代码:

wb = read.xlsx("Book1.xlsx")
renameWorksheet(wb, "S&P500 TR", "NEW NAME")
output = read.xlsx(wb, "NEW NAME")

希望这有帮助!

答案 2 :(得分:0)

首先加载工作簿,然后使用whichgrepl函数返回包含工作表名称的工作表编号(以这种方式完成时可以包含'&amp;'字符)。这似乎在我目前正在开发的应用程序中运行良好。

下面给出了一个(不完整的)示例,该示例应该很容易修改为您的上下文。在我的情况下,'i'是一个文件名(循环遍历许多文件)。 “玩具”代码在这里:

wb <- loadWorkbook(file = i)
which( grepl("CAPEX & Depreciation", names(wb)) )