获取 R 中特定模式后的字符 - 正则表达式
Get the characters after a certain pattern in R - regex
我有一个包含一列的数据框:
df <- data.frame(cat = c("c(\\"BPT\\", \"BP\")", "c(\"BP2\", \"BP\")", "c(\"BPT\", \"BP\")", "c(\"CN\", \"NC\")"))
df$cat <- as.character(df$cat)
df$cat
如何提取出现在c(\"之后的字符,有时只有一个反斜线,有时有2个。同样的字符,有时字符是2个,有时是3个。例如BP2,BP等等
到目前为止我已经尝试过:
substr(x = df$cat, start = 4, stop = 6)
但这会导致:
"\"BP" "BP2" "BPT" "CN\""
我只希望输出显示
"BPT" "BP2" "BPT" "CN"
您可以使用
df <- data.frame(cat = c("c(\\"BPT\\", \"BP\")", "c(\"BP2\", \"BP\")", "c(\"BPT\", \"BP\")", "c(\"CN\", \"NC\")"))
df$cat <- as.character(df$cat)
unlist(lapply(gsub('\', '', df$cat, fixed=TRUE), function(x) eval(parse(text=x))[[1]]))
## => [1] "BPT" "BP2" "BPT" "CN"
备注
gsub('\', '', df$cat, fixed=TRUE)
删除所有反斜杠。如果您只打算删除 "
. 之前的反斜杠,则可以使用 gsub('\\"', '"', df$cat, fixed=TRUE)
eval(parse(text=x))[[1]]
解析向量和returns第一项
lapply
帮助遍历您拥有的全部数据。参见 Using sapply and lapply。
我有一个包含一列的数据框:
df <- data.frame(cat = c("c(\\"BPT\\", \"BP\")", "c(\"BP2\", \"BP\")", "c(\"BPT\", \"BP\")", "c(\"CN\", \"NC\")"))
df$cat <- as.character(df$cat)
df$cat
如何提取出现在c(\"之后的字符,有时只有一个反斜线,有时有2个。同样的字符,有时字符是2个,有时是3个。例如BP2,BP等等
到目前为止我已经尝试过:
substr(x = df$cat, start = 4, stop = 6)
但这会导致:
"\"BP" "BP2" "BPT" "CN\""
我只希望输出显示
"BPT" "BP2" "BPT" "CN"
您可以使用
df <- data.frame(cat = c("c(\\"BPT\\", \"BP\")", "c(\"BP2\", \"BP\")", "c(\"BPT\", \"BP\")", "c(\"CN\", \"NC\")"))
df$cat <- as.character(df$cat)
unlist(lapply(gsub('\', '', df$cat, fixed=TRUE), function(x) eval(parse(text=x))[[1]]))
## => [1] "BPT" "BP2" "BPT" "CN"
备注
gsub('\', '', df$cat, fixed=TRUE)
删除所有反斜杠。如果您只打算删除"
. 之前的反斜杠,则可以使用 eval(parse(text=x))[[1]]
解析向量和returns第一项lapply
帮助遍历您拥有的全部数据。参见 Using sapply and lapply。
gsub('\\"', '"', df$cat, fixed=TRUE)