我正在从一个有大量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]
您可以先将文件作为原始文本读取,以便可以用引号替换括号,然后将其作为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()