【发布时间】:2018-09-21 08:56:53
【问题描述】:
假设我有以下字符串:
params <- "var1 /* first, variable */, var2, var3 /* third, variable */"
我想使用, 作为分隔符来拆分它,然后提取“引用的子字符串”,所以我得到了 2 个向量,如下所示:
params_clean <- c("var1","var2","var3")
params_def <- c("first, variable","","third, variable") # note the empty string as a second element.
我在广义上使用术语“引用”,带有任意字符串,这里是/* 和*/,它们可以保护子字符串不被拆分。
我发现了一个基于read.table 的解决方法,并且它允许引用元素:
library(magrittr)
params %>%
gsub("/\\*","_temp_sep_ '",.) %>%
gsub("\\*/","'",.) %>%
read.table(text=.,strin=F,sep=",") %>%
unlist %>%
unname %>%
strsplit("_temp_sep_") %>%
lapply(trimws) %>%
lapply(`length<-`,2) %>%
do.call(rbind,.) %>%
inset(is.na(.),value="")
但它非常丑陋和hackish,有什么更简单的方法?我想在这种情况下必须有一个regex 来提供给strsplit。
【问题讨论】: