Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按数据类型拆分R中的字符串_R_Regex - Fatal编程技术网

按数据类型拆分R中的字符串

按数据类型拆分R中的字符串,r,regex,R,Regex,我有一个向量,像: “XY13DJ”“J114HD”“E63NP”“F161JU”“AM76NZ”“PMI79DU” 我需要分成两个向量,比如“XY J E F AM PMI”和“13DJ,114HD,63NP,161JU 76NZ,79DU” 在字符串中,每当第一个数字出现时,数据都应该被拆分 我写过这样的代码,但不起作用: enter code here vector_1 = c() vector_2 = c() string_split <- function(ele){ v

我有一个向量,像: “XY13DJ”“J114HD”“E63NP”“F161JU”“AM76NZ”“PMI79DU”

我需要分成两个向量,比如“XY J E F AM PMI”和“13DJ,114HD,63NP,161JU 76NZ,79DU”

在字符串中,每当第一个数字出现时,数据都应该被拆分

我写过这样的代码,但不起作用:

enter code here
vector_1 = c()
vector_2 = c()
string_split <- function(ele){
    val <- regexpr('[0-9]',ele)[1]
    fn <- substr(ele,0,val-1)
    ln <- substr(ele,val,nchar(ele))
    vector_1 <- append(vector_1,fn)
    vector_2 <- append(vector_2,ln)
}
sapply(vector-to-pass, string_split)
在此处输入代码
向量_1=c()
向量_2=c()

string_split如果希望将其作为两列数据帧,请尝试此操作或省略
as.list

as.list(read.table(text = sub("(\\d)", " \\1", x), as.is = TRUE))
给予:

$V1
[1] "XY"  "J"   "E"   "F"   "AM"  "PMI"

$V2
[1] "13DJ"  "114HD" "63NP"  "161JU" "76NZ"  "79DU" 

下面是另一个基本R解决方案,该解决方案基于正向前瞻和向后前瞻,由一个空元素拆分:

as.data.frame(do.call(rbind, strsplit(vec, "(?<=\\p{L})(?=\\d+\\p{L}+$)", perl = TRUE)))
结果:

   V1    V2
1  XY  13DJ
2   J 114HD
3   E  63NP
4   F 161JU
5  AM  76NZ
6 PMI  79DU
vec = c("XY13DJ", "J114HD", "E63NP", "F161JU", "AM76NZ", "PMI79DU")
数据:

   V1    V2
1  XY  13DJ
2   J 114HD
3   E  63NP
4   F 161JU
5  AM  76NZ
6 PMI  79DU
vec = c("XY13DJ", "J114HD", "E63NP", "F161JU", "AM76NZ", "PMI79DU")