我在数据框中有一个列,其中包含需要拆分为列的字符。当列中的字符串长度为12时,我的代码似乎会中断,但当字符串的长度为11时,它的工作正常。
S99.ABCD{T}
S99.ABCD{V}
S99.ABCD{W}
S99.ABCD{Y}
Q100.ABCD{A}
Q100.ABCD{C}
Q100.ABCD{D}
Q100.ABCD{E}
理想格式的一个例子在左边,我得到的是在右边:
ID WILD RES MUT | ID WILD RES MUT
ABCD S 99 T | ABCD S 99 T
... | ...
ABCD Q 100 A | .ABC Q 100 {
... | ...
我目前的解决方案如下:
data <- data.frame(ID = substr(mdata$substitution,
gregexpr(pattern = "\\.",
mdata$substitution)[[1]] + 1,
gregexpr(pattern = "\\{",
mdata$substitution)[[1]] - 1),
WILD = substr(mdata$substitution, 0, 1),
RES = gsub("[^0-9]","", mdata$substitution),
MUT = substr(mdata$substitution,
gregexpr(pattern = "\\{",
mdata$substitution)[[1]] + 1,
gregexpr(pattern = "\\}",
mdata$substitution)[[1]] - 1))
我不确定为什么我的代码不起作用,我想使用gregexpr我能找到字符串中的模式位置,找出我要提取的字符的位置,但它不起作用当字符串的长度发生变化时。