我的输出看起来如下(示例):
[1] " 360<e8>_ Tank Top Gas Portable Heater" " 180<e8>_ Pir-Incandescent-CFL-LED Occupancy Detector - White"
[3] " 90<e8>_ Angle Bracket - Silver Galvanized" " Professional 90<e8>_ Tube Bender"
但是,当我检查结构时,我得到以下内容:
str(samp)
chr [1:26] " 360\xe8_ Tank Top Gas Portable Heater" " 180\xe8_ Pir-Incandescent-CFL-LED Occupancy Detector - White" " 90\xe8_ Angle Bracket - Silver Galvanized"
我正在尝试用空白替换'_'和其他类似的unicode字符。
我尝试了以下内容:
str_extract(samp, '\\<(.*?)_')
并返回NA。
然而,当我尝试以下内容时:
vec1 <- c('360<e8>_ Tank Top ', 'Professional 90<e8>_ Tube', 'AR30S Retail Optics 36<U+FFFD>_ LED', '45<U+3E38653C>_ Sch.', 'Connectors 341 Tan _x000D_')
str_extract(vec1, '\\<(.*?)_')
我得到以下输出,我想要的是'samp'
[1] "<e8>_" "<e8>_" "<U+FFFD>_" "<U+3E38653C>_" NA
所以,我只能在创建矢量时进行比较。在这种情况下,当我的样本的底层结构与打印时显示的结构不同时,我如何进行比较?
有关如何处理此问题的任何意见?
答案 0 :(得分:2)
只需使用gsub。
gsub('<.*?_', '', samp)
或
gsub('[^[:print:]]*_', '', samp)
[^[:print:]]*
有助于匹配不可打印的字符。