2015-02-10 12 views
8

Vì vậy, tôi đã phân tích một số tập tin XML bằng cách sử dụng gói XML sử dụng đoạn mã sauDi chuyển không gian trắng không thể in từ chưa biết (với tôi) mã hóa

library(XML) 
data <- xmlToDataFrame(xmlParse("Some file I can't share.xml")) 

Tất cả mọi thứ đã làm việc tốt và tôi đã có kết quả mong đợi

dim(data) 
## [1] 554560 13 

vấn đề duy nhất dù rằng một số mục của tôi trông như sau

x <- "2 irfl014" 
x 
## [1] "2 \002\003\004\003\005\005\006\005\002\003\004\003\005\005\006\005irfl014" 

Cố gắng để xác định mã hóa (không thành công)

Encoding(x) 
## [1] "unknown" 

library(stringi) 
stri_enc_detect(x) 
# [[1]] 
# [[1]]$Encoding 
# [1] "UTF-8"  "Shift_JIS" "GB18030" "EUC-JP" "EUC-KR" "Big5"  
# 
# [[1]]$Language 
# [1] "" "ja" "zh" "ja" "ko" "zh" 
# 
# [[1]]$Confidence 
# [1] 0.1 0.1 0.1 0.1 0.1 0.1 

Encoding không phải là lĩnh vực của tôi mạnh về chuyên môn, có cách nào đơn giản để chuyển đổi x chỉ đơn giản là

x 
## [1] "2 irfl014" 
+2

bạn có thể cung cấp một 'dput' của 'x'? –

+0

@SvenHohenstein Tôi đã chia sẻ 'dput' ... –

Trả lời

10
x <- "2 \002\003\004\003\005\005\006\005\002\003\004\003\005\005\006\005irfl014" 

cat(x) 
# 2 irfl014 

Các ký tự đặc biệt, ví dụ: "\002" là các ký tự điều khiển không thể in . Xem here để biết thêm thông tin.

Bạn có thể sử dụng gsub lệnh sau để loại bỏ tất cả các ký tự điều khiển:

gsub("[[:cntrl:]]+", "", x) 
# [1] "2 irfl014" 
Các vấn đề liên quan