簡單運算
字串符操作中有較多的函數以及不同的回傳資料型態要特別注意。
字串相黏
普遍程式語言能以 +
作為字串相黏運算子,如:Python、JavaScript等..。 R 需依賴 paste()
或 paste0()
函數
無間隔相黏
paste0(x,y)
[1] "sealchangpopplio"
間隔一空白字元相黏
paste(x,y)
[1] "sealchang popplio"
間隔一逗號字元相黏
paste(x,y,sep = ',')
[1] "sealchang,popplio"
間隔自定義字串相黏
paste(x,y,sep = '以及')
[1] "sealchang以及popplio"
多字串相黏
paste0(x,' ','own',' ',y)
[1] "sealchang own popplio"
字串分割
strsplit()
回傳為 list
型別,unlist(recursive = F)
後再做後續處理。 %>%
為管線運算子,在dplyr
套件中可取得,功能即是把%>%
前的運算結果交往後方函數繼續運算,在後方函數中以.
代表之,可連續使用。執行require(dplyr)
後即可使用,建議熟悉使用以提高程式易讀性。
逐一分割
[[1]]
[1] "p" "o" "p" "p" "l" "i" "o"
strsplit(y,split = '') %>% unlist(.,recursive = F)
[1] "p" "o" "p" "p" "l" "i" "o"
以指定字串分割
"" "rpubs.com" "sealchang" "ch1"
strsplit(z,split = '/') %>% unlist(.,recursive = F)
[1] "https:" "" "rpubs.com" "sealchang" "ch1"
z %>% strsplit(.,split = '/') %>% unlist(.,recursive = F)
[1] "https:" "" "rpubs.com" "sealchang" "ch1"
已指定字串作分隔並合併成一字串
z <- 'https://rpubs.com/sealchang/ch1'
z %>% strsplit(.,split = '/') %>% unlist(.,recursive = F) %>% paste(.,collapse = '/')
[1] "https://rpubs.com/sealchang/ch1"
P.S. paste(x,collapse = '/')
與 strsplit(x,split = '/') %>% unlist
可視為反函數關係
字元取代
取代字串中首個符合條件的字元
w <- 'popplio'
# replacement = '' 可達到刪除字元的功效
sub(pattern = 'p',replacement = '',x = w)
[1] "opplio"
sub(pattern = 'p',replacement = 'k',x = w)
[1] "kopplio"
取代字串中所有符合條件的字元
w <- 'popplio'
# replacement = '' 可達到刪除字元的功效
gsub(pattern = 'p',replacement = '',x = w)
[1] "olio"
gsub(pattern = 'p',replacement = 'k',x = w)
[1] "kokklio"
擷取字串片段
與其他程式語言不同之處,R 語言中的 index 皆從 1 開始。
v <- 'popplio'
# replacement = '' 可達到刪除字元的功效
substr(x = v,start = 1,stop = 5)
[1] "poppl"
substr(x = v,start = 2,stop = 3)
[1] "op"
字串字元數
length()
與 nchar()
別混淆。 nchar()
=> 計算字串長度 length()
=> 計算向量或清單的長度
v <- 'popplio'
v %>% length(.)
[1] 1
v %>% nchar(.)
[1] 7
LS0tDQp0aXRsZTogIuWtl+S4suespuaTjeS9nCINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMg57Ch5Zau6YGL566XDQoNCuWtl+S4suespuaTjeS9nOS4reaciei8g+WkmueahOWHveaVuOS7peWPiuS4jeWQjOeahOWbnuWCs+izh+aWmeWei+aFi+imgeeJueWIpeazqOaEj+OAgg0KDQpgYGB7cn0NCiMg5Yid5aeL5YC8DQp4IDwtICdzZWFsY2hhbmcnDQp5IDwtICdwb3BwbGlvJw0KYGBgDQoNCiMjIOWtl+S4suebuOm7jw0KDQrmma7pgY3nqIvlvI/oqp7oqIDog73ku6UgYCtgIOS9nOeCuuWtl+S4suebuOm7j+mBi+eul+WtkO+8jOWmgu+8mlB5dGhvbuOAgUphdmFTY3JpcHTnrYkuLuOAgg0KUiDpnIDkvp3os7QgYHBhc3RlKClgIOaIliBgcGFzdGUwKClgIOWHveaVuA0KDQojIyMg54Sh6ZaT6ZqU55u46buPDQoNCmBgYHtyfQ0KcGFzdGUwKHgseSkNCmBgYA0KDQojIyMg6ZaT6ZqU5LiA56m655m95a2X5YWD55u46buPDQoNCmBgYHtyfQ0KcGFzdGUoeCx5KQ0KYGBgDQoNCiMjIyDplpPpmpTkuIDpgJfomZ/lrZflhYPnm7jpu48NCg0KYGBge3J9DQpwYXN0ZSh4LHksc2VwID0gJywnKQ0KYGBgDQoNCiMjIyDplpPpmpToh6rlrprnvqnlrZfkuLLnm7jpu48NCg0KYGBge3J9DQpwYXN0ZSh4LHksc2VwID0gJ+S7peWPiicpDQpgYGANCg0KIyMjIOWkmuWtl+S4suebuOm7jw0KDQpgYGB7cn0NCnBhc3RlMCh4LCcgJywnb3duJywnICcseSkNCmBgYA0KDQojIyDlrZfkuLLliIblibINCg0KYHN0cnNwbGl0KClgIOWbnuWCs+eCuiBgbGlzdGAg5Z6L5Yil77yMYHVubGlzdChyZWN1cnNpdmUgPSBGKWAg5b6M5YaN5YGa5b6M57qM6JmV55CG44CCDQpgJT4lYOeCuueuoee3mumBi+eul+WtkO+8jOWcqGBkcGx5cmDlpZfku7bkuK3lj6/lj5blvpfvvIzlip/og73ljbPmmK/miopgJT4lYOWJjeeahOmBi+eul+e1kOaenOS6pOW+gOW+jOaWueWHveaVuOe5vOe6jOmBi+eul++8jOWcqOW+jOaWueWHveaVuOS4reS7pWAuYOS7o+ihqOS5i++8jOWPr+mAo+e6jOS9v+eUqOOAguWft+ihjGByZXF1aXJlKGRwbHlyKWDlvozljbPlj6/kvb/nlKjvvIzlu7rorbDnhp/mgonkvb/nlKjku6Xmj5Dpq5jnqIvlvI/mmJPoroDmgKfjgIINCg0KIyMjIOmAkOS4gOWIhuWJsg0KYGBge3J9DQojIGluc3RhbGwucGFja2FnZXMoJ2RwbHlyJykg5rKS5pyJ6YCZ5YCL5aWX5Lu255qE6aCI5Z+36KGM5LiA5qyhDQpyZXF1aXJlKGRwbHlyKQ0KDQpzdHJzcGxpdCh5LHNwbGl0ID0gJycpDQpzdHJzcGxpdCh5LHNwbGl0ID0gJycpICU+JSB1bmxpc3QoLixyZWN1cnNpdmUgPSBGKQ0KYGBgDQoNCiMjIyDku6XmjIflrprlrZfkuLLliIblibINCg0KYGBge3J9DQp6IDwtICdodHRwczovL3JwdWJzLmNvbS9zZWFsY2hhbmcvY2gxJw0KIyDku6XkuIvkuInnqK7ngrrnrYnlg7nmlZjov7ANCnVubGlzdChzdHJzcGxpdCh6LHNwbGl0ID0gJy8nKSxyZWN1cnNpdmUgPSBGKQ0Kc3Ryc3BsaXQoeixzcGxpdCA9ICcvJykgJT4lIHVubGlzdCguLHJlY3Vyc2l2ZSA9IEYpDQp6ICU+JSBzdHJzcGxpdCguLHNwbGl0ID0gJy8nKSAlPiUgdW5saXN0KC4scmVjdXJzaXZlID0gRikNCmBgYA0KDQojIyMg5bey5oyH5a6a5a2X5Liy5L2c5YiG6ZqU5Lim5ZCI5L215oiQ5LiA5a2X5LiyDQoNCmBgYHtyfQ0KeiA8LSAnaHR0cHM6Ly9ycHVicy5jb20vc2VhbGNoYW5nL2NoMScNCnogJT4lIHN0cnNwbGl0KC4sc3BsaXQgPSAnLycpICU+JSB1bmxpc3QoLixyZWN1cnNpdmUgPSBGKSAlPiUgcGFzdGUoLixjb2xsYXBzZSA9ICcvJykNCmBgYA0KDQpQLlMuIGBwYXN0ZSh4LGNvbGxhcHNlID0gJy8nKWAg6IiHIGBzdHJzcGxpdCh4LHNwbGl0ID0gJy8nKSAlPiUgdW5saXN0YCDlj6/oppbngrrlj43lh73mlbjpl5zkv4INCg0KIyMg5a2X5YWD5Y+W5LujDQoNCiMjIyDlj5bku6PlrZfkuLLkuK3pppblgIvnrKblkIjmop3ku7bnmoTlrZflhYMNCg0KYGBge3J9DQp3IDwtICdwb3BwbGlvJw0KDQojIHJlcGxhY2VtZW50ID0gJycg5Y+v6YGU5Yiw5Yiq6Zmk5a2X5YWD55qE5Yqf5pWIDQpzdWIocGF0dGVybiA9ICdwJyxyZXBsYWNlbWVudCA9ICcnLHggPSB3KQ0Kc3ViKHBhdHRlcm4gPSAncCcscmVwbGFjZW1lbnQgPSAnaycseCA9IHcpDQpgYGANCg0KIyMjIOWPluS7o+Wtl+S4suS4reaJgOacieespuWQiOaineS7tueahOWtl+WFgw0KDQpgYGB7cn0NCncgPC0gJ3BvcHBsaW8nDQoNCiMgcmVwbGFjZW1lbnQgPSAnJyDlj6/pgZTliLDliKrpmaTlrZflhYPnmoTlip/mlYgNCmdzdWIocGF0dGVybiA9ICdwJyxyZXBsYWNlbWVudCA9ICcnLHggPSB3KQ0KZ3N1YihwYXR0ZXJuID0gJ3AnLHJlcGxhY2VtZW50ID0gJ2snLHggPSB3KQ0KYGBgDQoNCiMjIyDmk7flj5blrZfkuLLniYfmrrUNCg0K6IiH5YW25LuW56iL5byP6Kqe6KiA5LiN5ZCM5LmL6JmV77yMUiDoqp7oqIDkuK3nmoQgaW5kZXgg55qG5b6eIDEg6ZaL5aeL44CCDQoNCmBgYHtyfQ0KdiA8LSAncG9wcGxpbycNCg0KIyByZXBsYWNlbWVudCA9ICcnIOWPr+mBlOWIsOWIqumZpOWtl+WFg+eahOWKn+aViA0Kc3Vic3RyKHggPSB2LHN0YXJ0ID0gMSxzdG9wID0gNSkNCnN1YnN0cih4ID0gdixzdGFydCA9IDIsc3RvcCA9IDMpDQpgYGANCg0KIyMjIOWtl+S4suWtl+WFg+aVuA0KDQpgbGVuZ3RoKClgIOiIhyBgbmNoYXIoKWAg5Yil5re35reG44CCDQpgbmNoYXIoKWAgPT4g6KiI566X5a2X5Liy6ZW35bqmDQpgbGVuZ3RoKClgID0+IOioiOeul+WQkemHj+aIlua4heWWrueahOmVt+W6pg0KDQpgYGB7cn0NCnYgPC0gJ3BvcHBsaW8nDQoNCnYgJT4lIGxlbmd0aCguKQ0KdiAlPiUgbmNoYXIoLikNCmBgYA0KDQoNCg0K