这个问题在这里已经有了答案:
R strsplit with multiple unordered split arguments?
(4 个回答)
2年前关闭。
我该如何拆分这个
Chr3:153922357-153944632(-)
Chr11:70010183-70015411(-)
进入
Chr3 153922357 153944632 -
Chr11 70010183 70015411 -
我试过
strsplit(df$V1,"[[:punct:]]"))
,但负号并没有出现在最终结果中
最佳答案
在基础 R 中使用 stringsplit
怎么样?和 gsub
:
# Your sample strings
ss <- c("Chr3:153922357-153944632(-)",
"Chr11:70010183-70015411(-)")
# Split items as list of vectors
lst <- lapply(ss, function(x)
unlist(strsplit(gsub("(.+):(\\d+)-(\\d+)\\((.)\\)", "\\1,\\2,\\3,\\4", x), ",")))
# rbind to dataframe if necessary
do.call(rbind, lst);
# [,1] [,2] [,3] [,4]
#[1,] "Chr3" "153922357" "153944632" "-"
#[2,] "Chr11" "70010183" "70015411" "-"
这也适用于其他染色体名称和正链特征。
关于r - 使用带有多个分隔符的 strsplit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47773559/