我有一系列excel文件,我已经使用这个基本代码导入我的数据很长时间了。我没有对数据或代码做任何修改,但是我不再正确地读取数据了。我读了这些文件如下:
apply_fun <- function(filename) {
data <- readxl::read_excel(filename, sheet = "Section Cut Forces - Design",
skip = 1, col_names = TRUE)
data <- data[-1,]
data <- subset(data, StepType == "Max")
data <- data[,c(1,2,6,10)]
data$id <- filename
return(data)
}
filenames <- list.files(pattern = "\\.xlsx", full.names = TRUE)
first <- lapply(filenames,apply_fun)
out <- do.call(rbind,first)out的前几行如下所示:
structure(list(SectionCut = c("1", "1", "1", "1", "1", "2", "2",
"2", "2", "2"), OutputCase = c("Service (after losses)", "LL-1",
"LL-2", "LL-3", "LL-4", "Service (after losses)", "LL-1", "LL-2",
"LL-3", "LL-4"), V2 = c("11.522", "28.587", "42.246000000000002",
"44.212000000000003", "36.183", "9.8469999999999995", "23.989000000000001",
"37.408999999999999", "43.401000000000003", "40.450000000000003"
), M3 = c("299728.66100000002", "42863.517999999996", "63147.332999999999",
"69628.464000000007", "59196.74", "0", "27.942", "44.863999999999997",
"46.31", "36.204999999999998"), id = c("./100-12-S00.xlsx", "./100-12-S00.xlsx",
"./100-12-S00.xlsx", "./100-12-S00.xlsx", "./100-12-S00.xlsx",
"./100-12-S00.xlsx", "./100-12-S00.xlsx", "./100-12-S00.xlsx",
"./100-12-S00.xlsx", "./100-12-S00.xlsx")), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))我试图将行移除如下:
out2 <- out[!grep("Service (after losses)", out$OutputCase),]但结果是0。
我必须说,这对我来说才刚刚开始成为一个问题。几个月来,我一直能够成功地运行这段代码,而且从来没有出现过任何问题。
发布于 2021-01-27 07:49:03
()是正则表达式中的特殊符号。当您在grep/grepl等函数中使用它们时,它们具有特殊的意义。您可以在grep中使用fixed = TRUE来精确匹配它们。此外,!应与grepl一起使用,-应与grep一起使用以删除行。
out[-grep("Service (after losses)", out$OutputCase, fixed = TRUE),]除此之外,这看起来像一个精确的匹配,所以为什么使用模式匹配与grep?试着:
out[out$OutputCase != 'Service (after losses)', ]https://stackoverflow.com/questions/65914811
复制相似问题