6.1字符串的处理【例6-1】拆分字符串“Createacomma-separatedStringfromtheabovelistofpairs.”,拆分的位置为空格。第一种拆分方式:第三种拆分方式:>x<-"Createacomma-separatedStringfromtheabovelistofpairs.">y<-strsplit(x,"1ls+"))#用正则表达式拆分>y进默认用空格拆分>y<-strsplit(x,"")[1]>y"a"[1][1] "Create""comma-separated""a""from""the""comma-separated"[4] "String"[1] "Create""of""from""the""list"[7] "above"[4] "String""list""of"[10] "pairs.[7] "above"[10] "pairs."第二种拆分方式:注意:#用NULL串拆分strsplit()函数中的split参数的设置了三个不一样的值,#用空字符拆分>y<-strsplit(x,"")第一种是一个空格,第二种是一个空字符,第三个是>y“Ils+”。第一个参数空格和第三个参数“Ils+”得到[1]了相同的效果,都是把x字符串按照空格进行分割。第[1]"C""""e""a""t""e""""a""""c""o""m""m""a""_""s"二个参数里面相当于设置了‘split="",,当设置为空[17]"e""""a""r""a""t""e""d""""s""t""r""j""n""g"""字符的时候,strsplit()函数会把字符串按照字符一个""a""b""o""y""e""""[33]"f""r""o""m""""t""h""e""个进行分割。所以第二种方式虽然对字符串进行了拆[49]"""s""t""""o""f""""p""a""j""""s"",分但没有完成题目要求
第一种拆分方式: > x<-"Create a comma-separated String from the above list of pairs." > y<-strsplit(x," ") #默认用空格拆分 > y [[1]] [1] "Create" "a" "comma-separated" [4] "String" "from" "the" [7] "above" "list" "of" [10] "pairs." 第二种拆分方式: #用NULL串拆分 > y<-strsplit(x,"") # 用空字符拆分 > y [[1]] [1] "C" "r" "e" "a" "t" "e" " " "a" " " "c" "o" "m" "m" "a" "-" "s" [17] "e" "p" "a" "r" "a" "t" "e" "d" " " "S" "t" "r" "i" "n" "g" " " [33] "f" "r" "o" "m" " " "t" "h" "e" " " "a" "b" "o" "v" "e" " " "l" [49] "i" "s" "t" " " "o" "f" " " "p" "a" "i" "r" "s" "." 【例6-1】拆分字符串“Create a comma-separatedString from the above list of pairs.”,拆分的位置为空格。 6.1 字符串的处理 第三种拆分方式: > y<-strsplit(x,"\\s+") #用正则表达式拆分 > y [[1]] [1] "Create" "a" "comma-separated" [4] "String" "from" "the" [7] "above" "list" "of" [10] "pairs. 注意: strsplit( )函数中的split参数的设置了三个不一样的值, 第一种是一个空格,第二种是一个空字符,第三个是 “\\s+”。第一个参数空格和第三个参数“\\s+”得到 了相同的效果,都是把x字符串按照空格进行分割。第 二个参数里面相当于设置了‘split=“”’,当设置为空 字符的时候,strsplit( )函数会把字符串按照字符一个 个进行分割。所以第二种方式虽然对字符串进行了拆 分但没有完成题目要求
6.1字符串的处理2.字符串拼接本书中使用paste()函数来实现字符串拼接。paste()函数的语法结构是:paste(..,sep="",collapse=NULL)(1)sep参数:负责两个字符串间的拼接内容:(2)collapse参数:负责一组字符串是否是在内部拼接
6.1 字符串的处理 2. 字符串拼接 本书中使用paste( )函数来实现字符串拼接。 paste( )函数的语法结构是: paste (.,sep = " ",collapse = NULL) (1) sep参数:负责两个字符串间的拼接内容; (2) collapse参数:负责一组字符串是否是在内部拼接
6.1字符串的处理例6-2将c("a",“b",“c",“d",“e")和c("A",“B",“C",“D",“E")拼接,拼接方式为1.直接拼接;2.用空字符拼接;3.用“”拼接。>x<-c("a""b""c","d","e")>y<- c("A","B","C","D","E")注意:sep参数使用默认值的情况下两个字拼接方式1:>paste(x,y)#将两个字符串向量用空格拼接,sep取默认值符向量的拼接是使用空格的方式拼接,[1]"aA""bB""cC""dD""eE"如果想直接拼接需要把sep参数设置为拼接方式2:“”,如果用“_”拼接需要将sep参数>paste(x,y,sep="")#将两个字符串向量用NULL串拼接[1]"aA""bB""cC""dD""eE"设置为“_”。拼接方式3:>paste(x,y,sep="-")#将两个字符串向量用"-"串拼接[1]"a-A""b-B""c-C""d-D""e-E
> x <- c("a","b","c","d","e") > y <- c("A","B","C","D","E") 拼接方式1: > paste(x,y) #将两个字符串向量用空格拼接,sep取默认值 [1] "a A" "b B" "c C" "d D" "e E“ 拼接方式2: > paste(x,y,sep = "") #将两个字符串向量用NULL串拼接 [1] "aA" "bB" "cC" "dD" "eE“ 拼接方式3: > paste(x,y,sep = "-") #将两个字符串向量用“-”串拼接 [1] "a-A" "b-B" "c-C" "d-D" "e-E“ 【例6-2】将c(“a”,“b”,“c”,“d”,“e”)和c(“A”,“B”,“C”,“D”,“E”)拼接,拼接方式为 1.直接拼接;2.用空字符拼接;3.用“-”拼接。 6.1 字符串的处理 注意: sep参数使用默认值的情况下两个字 符向量的拼接是使用空格的方式拼接, 如果想直接拼接需要把sep参数设置为 “”,如果用“-”拼接需要将sep参数 设置为“-
6.1字符串的处理3.字符串长度计算计算字符串长度可以用nchar()函数。需要注意的是length()函数与nchar()函数不同,length()函数是取向量的长度,nchar()函数用于计算字符串中的字符数量。nchar()函数的语法结构是:(keepNA取的是默认值)nchar(x,type="chars",keepNA=TRUE)nzchar(x,keepNA=FALSE)①x参数:判断的目标字符串;②type参数是判断长度的类型;③keepNA参数是设置NA是否参与计算长度(TRUE:NA值不参与计算;FLASE:参与计算);④nzchar()函数用于判断一个变量的长度是否为o,返回的是逻辑值
6.1 字符串的处理 3. 字符串长度计算 计算字符串长度可以用nchar( )函数。需要注意的是length( )函数与nchar( )函数不同, length( )函数是取向量的长度,nchar( )函数用于计算字符串中的字符数量。 nchar( )函数的语法结构是:(keepNA取的是默认值) nchar(x,type = "chars" ,keepNA = TRUE) nzchar(x,keepNA = FALSE) ① x参数:判断的目标字符串; ② type参数是判断长度的类型; ③ keepNA参数是设置NA是否参与计算长度(TRUE: NA值不参与计算;FLASE: 参与计算); ④ nzchar( )函数用于判断一个变量的长度是否为0,返回的是逻辑值
6.1字符串的处理【例6-3】判断c("ackieci",“bcgice.r",“c-year-ic",NA,"",“d[dd.ff]}")中每个字符串长度。注意:>x<-c("ackieci","bcgice.r","c-year-ic",NA, ","d[dd.ff]")①如果type参数是chars,keepNA参数是TRUE:>nchar(x)#计算字符串的长度[1] 7 8 9 NA 0 8nchar()函数按照每一个字符为一个标准计算字符串的长度,NA值不参与计算直接返回;井判断字符串的长度是否为0> nzchar(x)nzchar()函数判定字符串的长度是否大于o,如果大于[1] TRUE TRUE TRUE TRUE FALSE TRUEO返回TRUE,如果等于O返回FALSE。#按字符类型②type参数中常用的还有bytes,这个属性一般是在处>nchar("中文",type="chars")[1] 2理中文的时候出现,如果type参数设置为bytes,每一#按字节>nchar("中文",type="bytes")个中文字符按照2个字符计算。[1] 4③keepNA参数主要负责NA值是否参与计算。#NA值参与计算长度>nchar(x,keepNA=FALSE)在nchar()函数中keepNA参数是FALSE,NA值计算为2;[1]789208>nzchar(x,keepNA =TRUE)在nzchar()函数中keepNA参数是TRUE,NA不参与判断[1] TRUE TRUE TRUE NA FALSE TRUE直接显示NA值
> x<-c("ackieci","bcgice.r","c-year-ic",NA, "" ,"d[dd.ff]") > nchar(x) # 计算字符串的长度 [1] 7 8 9 NA 0 8 > nzchar(x) # 判断字符串的长度是否为0 [1] TRUE TRUE TRUE TRUE FALSE TRUE > nchar("中文",type = "chars") # 按字符类型 [1] 2 > nchar("中文",type = "bytes") # 按字节 [1] 4 > nchar(x,keepNA = FALSE) # NA值参与计算长度 [1] 7 8 9 2 0 8 > nzchar(x,keepNA = TRUE) [1] TRUE TRUE TRUE NA FALSE TRUE 【例6-3】判断c(“ackieci” , “bcgice.r” ,“c-year-ic” ,NA,“ ”,“d[dd.ff]”) 中每个字符串长度。 6.1 字符串的处理 注意: ①如果type参数是chars,keepNA 参数是TRUE: nchar( )函数按照每一个字符为一个标准计算字符串的 长度,NA值不参与计算直接返回; nzchar( )函数判定字符串的长度是否大于0,如果大于 0返回TRUE,如果等于0返回FALSE。 ② type参数中常用的还有bytes,这个属性一般是在处 理中文的时候出现,如果type参数设置为bytes,每一 个中文字符按照2个字符计算。 ③ keepNA 参数主要负责NA值是否参与计算。 在nchar( )函数中keepNA 参数是FALSE,NA值计算为2; 在nzchar( )函数中keepNA 参数是TRUE,NA不参与判断 直接显示NA值