如何在R中读取csv文件时忽略值中的逗号?

问题描述 投票:1回答:1

我正在从一个有大量csv文件的文件夹中读取R中的csv文件。我只需要读取文件名包含特定字符串的选定文件(“Redundant”)。在某些所需文件中,其中一列(“ROLE”)值包含逗号。我需要忽略这些逗号。我该怎么做?

例如:某些所需文件的值如下:

User,ROLE,Rule ID<br/>
amit,[oi.freetier.developer, gse.automationengineer],R12345

当我执行以下代码时:

files <- list.files(pattern='.*REDUNDANT(.*).csv$')

tbl <- sapply(files, read_csv, col_types = cols(.default = "c"), quote = "[]", simplify=FALSE) %>% 
  bind_rows(.id = "id") %>% select(id, `User Login`, `Rule ID`) %>% distinct()

我得到的结果如下:

   id                               `User` `Rule`              
   <chr>                            <chr>        <chr>                  
 1 Users.csv_REDUNDANT_amit.csv   amit       gse.automationengineer]
r csv tidyverse
1个回答
1
投票

您可以先将文件作为原始文本读取,以便可以用引号替换括号,然后将其作为csv读取:

tbl <- sapply(files, function(f) {
           gsub('\\[|\\]', '"', readLines(f)) %>%
               read.csv(text = ., check.names = FALSE)
       }) %>% 
       bind_rows(.id = "id") %>%
       select(id, User, `Rule ID`) %>%
       distinct()
© www.soinside.com 2019 - 2024. All rights reserved.