中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
R語言字符串處理值stringr

 

R語言處理字符串,相比于perlpython來說,比較麻煩。不能用下標(biāo)提取,也不能用循環(huán)遍歷索引。而R自身的字符串處理函數(shù),如sub()、grep()等函數(shù)又增加的記憶負(fù)擔(dān)。隨著使用R語言的場(chǎng)景越來越多,字符串處理是必不可少的。給大家推薦一個(gè)由 Hadley Wickham 開發(fā)的一個(gè)靈活的字符串處理包stringr

 

stringr的安裝和其他安裝包一樣,進(jìn)入到R的命令界面,運(yùn)行以下命令并加載:

 

install.packages('stringr')

library(stringr)

 

stringr處理字符串是以正則表達(dá)式為基礎(chǔ)的,所以在學(xué)習(xí)和使用stringr的時(shí)候最好能對(duì)正則表達(dá)式有一定的了解。

 

1)字符串的長(zhǎng)度

 

# 字符串長(zhǎng)度,類似R基礎(chǔ)函數(shù)的nchar

str_length(c('a', 'R for datascience', NA))

#> [1] 1 18 NA

#

# fruit <- c('apple','banana',="" 'pear',="">

str_count(fruit, 'a') # 返回向量fruit中可以匹配字母a的個(gè)數(shù)

#> [1] 1 3 1 1

 

2)字符串拼接函數(shù):

str_c()           把多個(gè)字符串拼接起來,類似str_joinR基礎(chǔ)函數(shù)paste

 

str_c('x', 'y')

#> [1] 'xy'

str_c('x', 'y', 'z')

#> [1] 'xyz'

 

使用sep參數(shù),設(shè)定分隔符:

 

str_c('x', 'y', sep =',')

#> [1] 'x, y'

 

和其他R函數(shù)一樣,缺失值會(huì)忽略. 如果你想輸出確實(shí)值為 'NA',需要用到str_replace_na()函數(shù):

 

x <>c('abc', NA)

str_c('|-', x, '-|')

#> [1] '|-abc-|' NA

str_c('|-', str_replace_na(x), '-|')

#> [1] '|-abc-|''|-NA-|'


上面的事例可以看出,str_c()是向量化處理的,自動(dòng)循環(huán)向量,輸出同樣長(zhǎng)度的向量:

 

str_c('prefix-', c('a', 'b', 'c'), '-suffix')

#> [1] 'prefix-a-suffix''prefix-b-suffix' 'prefix-c-suffix'

 

如果結(jié)合if語句,會(huì)選擇性的輸出想要的結(jié)果,如下:

 

name <>'Hadley'

time_of_day <>'morning'

birthday <>FALSE

 

str_c(

  'Good ',time_of_day, ' ', name,

  if(birthday) ' and HAPPY BIRTHDAY',

  '.'

)

#> [1] 'Good morning Hadley.'

 

如果需要把向量也鏈接起來,需要使用參數(shù) collapse:

 

str_c(c('x', 'y', 'z'), collapse =', ')

#> [1] 'x, y, z'

 

3)字符串提?。?/strong>


字符串提取函數(shù)是str_sub,有兩個(gè)參數(shù)start和end


str_sub(string, start, end)

 

x <>c('Apple', 'Banana', 'Pear')

str_sub(x, 1, 3)

#> [1] 'App' 'Ban' 'Pea'

# negative numbers count backwards from end

str_sub(x, -3, -1)

#> [1] 'ple' 'ana' 'ear'

 

需要注意的是,如果字符串太短,是str_sub并不會(huì)報(bào)錯(cuò),會(huì)盡可能的返回匹配的結(jié)果:

 

 

str_sub('a', 1, 5)

#> [1] 'a'


你也可以是 str_sub() 去進(jìn)行替換和修改匹配的字符串:

 

x <>c('Apple', 'Banana', 'Pear')

str_sub(x, 1, 1) <>str_to_lower(str_sub(x, 1, 1))

x

#> [1] 'apple' 'banana' 'pear'

 

4)大小寫轉(zhuǎn)換:


# 參數(shù)locale用于設(shè)定轉(zhuǎn)換的語言,默認(rèn)是英語


 

# 轉(zhuǎn)換成大寫

str_to_upper(c('i', 'h'))

#> [1] 'I' 'H'

# 轉(zhuǎn)換成小寫

str_to_lower(c('I', 'H'), locale = “en)

#> [1] 'i' 'h'

# 首字母轉(zhuǎn)換成大寫

x <>c('apple', 'banana', 'pear')

str_to_title()

#> [1] 'Apple', 'Banana', 'Pear'

 

5)字符串排序:


x <>c('apple', 'eggplant', 'banana')



str_sort(x, locale ='en'# English

#> [1] 'apple'    'banana'   'eggplant'

str_order(x)  # 返回索引

#> [1] 1 3 2

x[str_order(x)] #結(jié)果和str_sort一樣

#> [1] 'apple'    'banana'   'eggplant'

 

 

6)檢查字符串是否匹配:


檢查字符串是否匹配成功,并返回邏輯值


x <>c('apple', 'banana', 'pear')

str_detect(x, 'e')

#> [1] TRUE FALSE  TRUE

# 結(jié)合sum函數(shù)可以統(tǒng)計(jì)有多少個(gè)匹配成功

sum(str_detect(x, 'e'))

#> [1] 2

# 使用!符合可以得到相反的結(jié)果

!str_detect(x, 'e')

#> [1] FALSE TRUE FALSE

# 可以使用正在匹配的模式

x[str_detect(x, 'e')]

#> [1] 'apple' 'pear'

x[str_detect(x, 'e$')] # 美元符號(hào)$,在正則表達(dá)式里面表示末尾匹配

#> [1] 'pear'

 


7)替換


str_replace(string, pattern,replacement) 

str_replace_all(string, pattern,replacement) 

 

以上兩個(gè)函數(shù)用于替換匹配成功的字符,區(qū)別是str_replace指替換第一個(gè)匹配成功的字符,str_replace_all替換全部匹配成功的字符:

 

x <>c('apple', 'pear', 'banana')

str_replace(x, 'a', '-')    #只替換a-,而且只替換一次

#> [1] '-pple'  'pe-r'   'b-nana'

 

str_replace_all(x, 'a', '-')   #替換全部a-

#> [1] '-pple'  'pe-r'   'b-n-n-'

 

str_replace(x, '[aeiou]', '-') #[aeiou]表示替換中括號(hào)中其中之一

#> [1] '-pple'  'p-ar'   'b-nana'

 

str_replace_all(x, '[aeiou]', '-') #[aeiou]表示替換中括號(hào)中所有

#> [1] '-ppl-''p--r'   'b-n-n-'

 

# 其中str_repalce_all,可以寫成以下字典的模式:

x <>c('1house', '2cars', '3people')

str_replace_all(x, c('1' = 'one', '2' = 'two', '3' = 'three'))

#> [1] 'one house'    'two cars'     'three people'

 


8)返回匹配的字符串


str_subset(string, pattern)


val <-c('abc', 123,="">

 

# 全文匹配

str_subset(val,'a')

[1] 'abc' 'cba'

 

# 開頭匹配

str_subset(val,'^a')

[1] 'abc'

 

# 結(jié)尾匹配

str_subset(val,'a$')

[1] 'cba'

 


9)字符串分割

x <> 'This is a sentence.  This is another sentence.'


#以空格分割字符串,返回的是一個(gè)list

str_split(x, ' ')

[[1]]

[1] 'This' 'is' 'a' 'sentence.' '' 'This' 'is'

[8] 'another'   'sentence.'

#以空格分割字符串,返回的是一個(gè)list,可以用下標(biāo)提取,使其成為一個(gè)向量

str_split(x, ' ')[[1]]

#> [1] 'This'      'is'        'a'         'sentence.' ''          'This'    

#> [7] 'is'        'another'   'sentence.'

# 使用boundary('word')這種方式,是以word的邊界為分割,可以提出標(biāo)點(diǎn)符號(hào)以及多余的空格,如下:

str_split(x, boundary('word'))[[1]]

#> [1] 'This' 'is' 'a' 'sentence' 'This' 'is'

#> [7] 'another' 'sentence'


其他方法不常用,


str_trim():    去掉字符串的空格和TAB(\t)

str_pad():     補(bǔ)充字符串的長(zhǎng)度

str_dup():     復(fù)制字符串

str_wrap():    控制字符串輸出格式

str_locate:     找到匹配的字符串的位置。

str_conv:      字符編碼轉(zhuǎn)換

 



 /End.

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服