首页 > 解决方案 > 在 R 中读取 xlsx 文件时,路径必须是字符串错误

问题描述

library(dplyr)
library(data.table)
library(readxl)

macro <-
  list()

macro$filepath <-
  'C:\\Users\\TMC\\Documents'

macro$file <-
  list.files(
    macro$filepath, 
    pattern = 'EventData.xlsx',
    full.names = TRUE)

macro$sheet <- 
  'FY21'

macro$first_dt <- 
  '2021-02-01' %>% as.Date

dat <-
  macro$file[regexpr('~', macro$file) < 0] %>% 
  read_xlsx(., sheet = macro$sheet) %>% 
  data.table

dat <- 
  dat[!(DESCRIPTION %in% 'AEG')]

macro$keep <-
  c(
    'Product vs. buzz', 
    'CATEGORY', 
    'JUN', 
    'JUL', 
    'AUG', 
    'SEP', 
    'OCT', 
    'NOV', 
    'DEC', 
    'JAN', 
    'FEB', 
    'MAR',
    'APR', 
    'MAY')

dat <- 
  dat[
    , 
    intersect(macro$keep, dat %>% names), 
    with = FALSE]

setnames(
  dat,
  c('Product vs. buzz', 'CATEGORY'), 
  c('evt_type', 'raw'))

dat[, raw := (raw %>% tolower)]

##ISSUE IS HERE
macro$category <-
  list.files(
    macro$filepath, 
    pattern = 'BrandEventCategoryMapping', 
    full.names = TRUE) %>% 
  read_xlsx %>% 
  data.table

大家好,我正在尝试在 R 中运行上述代码。当我尝试读取宏 $category 部分中的 excel 文件时,我收到以下错误:

Error: `path` must be a string

谁能帮助我,让我知道我应该做什么或编辑来解决这个问题?我不擅长 R,不幸的是,我不得不在时间敏感的最后期限内运行别人的脚本。我真的很感激一些帮助!

标签: r

解决方案


list.files返回多个文件名。你不能一口气读完所有这些read_xlsx。您可能需要使用lapply/map来读取文件。

library(magrittr)

result <-
  list.files(
    macro$filepath, 
    pattern = 'BrandEventCategoryMapping', 
    full.names = TRUE) %>% 
  purrr::map_df(read_xlsx)
  #If you want them as list use map
  #purrr::map(read_xlsx)

推荐阅读