R语言之字符串的组合与拆分

Python018

R语言之字符串的组合与拆分,第1张

由以上可知, paste() 默认连接符为空格, paste0() 连接符为空,等于 paste(sep = '')

由以上可知,当被组合对象元素个数不相等时,会依次选取元素组合,最终的组合数等于元素个数多的那个

针对变量内部元素进行拼接时,使用 x[1:n] 进行遍历,'n'小于 x 的维度

str_split_fixed(str,pattern,n) , pattern 为分隔符,如果 pattern = '' ,则将 str 拆分成一个个字符,n表示将 str 拆分n个部分,若 n 小于 str 中分隔符个数,则只有前 n-1 个(3刀4段)分隔符发挥作用,后面的分隔符不起作用

想了一个比较笨的方法。先在R里定义这个函数:

split.string<-function(string){

    str2<-strsplit(string,"")[[1]]

    string.split<-NULL

    j<-1

    string.split[j]<-str2[1]

    find.type<-function(char){

        if(grepl("[[:alpha:]]",char))

            type<-"alphabet"

        else if(grepl("[[:digit:]]",char))

            type<-"digit"

        else type<-"chinese"

        type

    }

    type<-find.type(str2[1])

    for(i in 2:length(str2)){

        type2<-find.type(str2[i])

        if(type2==type) string.split[j]<-paste(string.split[j],str2[i],sep="")

        else{

            j<-j+1

            type<-type2

            string.split<-c(string.split,str2[i])

        }

    }

    string.split

}

直接跑

split.string("中国123abc")

就好了

如果要区分更多的东西,就改一下内部的find.type()函数。我现在写的只能区分字母、数字和其他东西(比如标点和中文就分不开了)。