【发布时间】:2020-12-17 18:53:05
【问题描述】:
我有许多数据框的列表,我想在其中使用正则表达式更改数据框中的某些元素。这是我的数据的简化模型:
df1 <- data.frame(ID = c("KBS_2015_08_25_A1_P1", "KBS_2015_08_25_A2_P10", "KBS_2015_09_04_A2_P2"),
Site = c("KBS","KBS","KBS"))
df2 <- data.frame(ID = c("UMBS_2015_08_12_A1_P1", "UMBS_2015_08_29_D3_P3", "UMBS_2015_08_29_D5_P5"),
Site = c("UMBS","UMBS","UMBS"))
df_list <- list(df1=df1,df2=df2)
我试图创建一个函数,获取 ID 列中的信息并将其更改为日期的字符串。
change_id <- function(df){
df$ID[df$ID == "^KBS_2015_08_25*P\\d"] <- "8/25/2015"
df$ID[df$ID == "^KBS_2015_09_04*P\\d"] <- "9/4/2015"
df$ID[df$ID == "^UMBS_2015_08_12*P\\d"] <- "8/12/2015"
df$ID[df$ID == "^UMBS_2015_08_29*P\\d"] <- "8/29/2015"
return(df)
}
df_list <- lapply(df_list, change_id)
我没有收到任何错误,但此函数不会更改数据帧中的任何内容。我在尝试字符匹配时一定遗漏了一些东西。
使用 R 版本 4.0.2,Mac OS X 10.13.6
【问题讨论】:
-
你的正则表达式正确吗?
08_25*P表示文字08_2,然后是零个或多个5s,然后是文字P。