我有一个数据帧,其中有一列:
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"
在线观看R演示。
票据
gsub('\', '', df$cat, fixed=TRUE)
删除所有反斜杠。如果只计划删除"
之前的反斜杠,则可以使用gsub('\"', '"', df$cat, fixed=TRUE)
eval(parse(text=x))[[1]]
解析矢量并返回第一项lapply
有助于遍历您所拥有的全部数据。请参见使用sapply和lapply