2011-12-08 17 views
56

Tôi chạy R trên Windows và có tệp csv trên Máy tính để bàn. Tôi tải nó như sau,Sự cố đường dẫn tệp trong R bằng cách sử dụng lỗi "Lỗi chữ số thập phân trong chuỗi ký tự" của Windows (EN)

x<-read.csv("C:\Users\surfcat\Desktop\2006_dissimilarity.csv",header=TRUE) 

nhưng R cung cấp cho các thông báo lỗi sau

Error: '\U' used without hex digits in character string starting "C:\U"

Vì vậy, cách chính xác để tải tập tin này là những gì. Tôi đang sử dụng Vista

Trả lời

87

thay thế tất cả \ bằng \\.

nó đang cố gắng để thoát khỏi nhân vật tiếp theo trong trường hợp này U như vậy để chèn một \ bạn cần phải chèn một thoát \ đó là \\

+28

Thay thế chúng với '/' làm việc là tốt. –

+0

điều này đã khắc phục được sự cố của tôi, cảm ơn. – Mostafa

+0

Điều này đúng là chỉ cần thay \ bằng \\ và tập lệnh chạy thành công. Cảm ơn Smit !! –

22

Xin đừng đánh dấu câu trả lời này là đúng như smitec đã trả lời một cách chính xác. Tôi đang bao gồm một chức năng thuận tiện tôi giữ trong thư viện .Đầu tiên của tôi mà làm cho chuyển đổi một cửa sổ đường dẫn đến định dạng hoạt động trong R (các phương pháp được mô tả bởi Sacha Epskamp). Đơn giản chỉ cần sao chép đường dẫn đến clipboard của bạn (ctrl + c) và sau đó chạy các chức năng như pathPrep(). Không cần tranh cãi. Đường dẫn được in vào bảng điều khiển của bạn một cách chính xác và được ghi vào clipboard của bạn để dán dễ dàng vào tập lệnh. Hy vọng điều này là hữu ích.

pathPrep <- function(path = "clipboard") { 
    y <- if (path == "clipboard") { 
     readClipboard() 
    } else { 
     cat("Please enter the path:\n\n") 
     readline() 
    } 
    x <- chartr("\\", "/", y) 
    writeClipboard(x) 
    return(x) 
} 
+1

Tôi đã về để viết này và tôi vui vì tôi đã kiểm tra trước. Cảm ơn một tấn. Tôi thực sự ngạc nhiên điều này đã không bị rò rỉ vào một trong những gói phổ biến hơn ra khỏi đó (trừ khi tôi chỉ thiếu nó). Tôi sẽ sử dụng điều này trong kịch bản của tôi vì vậy tôi sẽ đăng các biến thể nhỏ khi tôi hoàn thành. – Rob

+1

Hiện tại, trong gói phát triển báo cáo và sẽ được đẩy lên CRAN cuối cùng. Xem ['WP' (đường dẫn cửa sổ)] (https://github.com/trinker/reports/blob/master/R/WP.R) trong gói dev báo cáo. –

7

Giải pháp

Hãy thử điều này: x <- read.csv("C:/Users/surfcat/Desktop/2006_dissimilarity.csv", header=TRUE)

Giải thích

R là không thể hiểu được cửa sổ thông thường đường dẫn chính xác vì "\" đã ý nghĩa đặc biệt - nó được sử dụng như thoát khỏi nhân vật để cung cấp cho các nhân vật sau đây ý nghĩa đặc biệt (\n cho dòng mới, \t cho tab, \r để trả lại vận chuyển, ..., have a look here).

Vì R không biết trình tự \U nó than phiền. Chỉ cần thay thế "\" bằng "/" hoặc sử dụng thêm "\" để thoát khỏi "\" khỏi ý nghĩa đặc biệt của nó và mọi thứ hoạt động trơn tru.

Alternative

Trên cửa sổ, tôi nghĩ rằng điều tốt nhất để làm để cải thiện công việc của bạn với cửa sổ đường dẫn cụ thể trong R là sử dụng ví dụ AutoHotkey cho phép các phím nóng tùy chỉnh:

  • xác định phím nóng, ví dụ: CNTR - phím Shift - V
  • gán cho nó một thủ tục thay thế backslashes trong Clipboard của bạn với slaches ...
  • khi đã bao giờ bạn muốn sao chép dán đường dẫn vào R bạn có thể sử dụng CNTR - phím Shift - V thay vì CNTR - V
  • Et-voila

AutoHotkey Code Snippet(link to homepage)

^+v:: 
StringReplace, clipboard, clipboard, \, /, All 
SendInput, %clipboard% 
0

Tôi nghĩ rằng R đang đọc '\' trong chuỗi như một ký tự thoát. Ví dụ \ n tạo một dòng mới trong một chuỗi, \ t tạo một tab mới trong chuỗi.

'\' sẽ hoạt động vì R sẽ nhận ra đây là dấu gạch chéo ngược thông thường.

-2

Cách đơn giản là sử dụng python. trong python thiết bị đầu cuối loại

r"C:\Users\surfcat\Desktop\2006_dissimilarity.csv" and you'll get back 'C:\Users\surfcat\Desktop\2006_dissimilarity.csv'

2

My Solution là để xác định một RStudio snippet như sau:

snippet pp 
    "`r gsub("\\\\", "\\\\\\\\\\\\\\\\", readClipboard())`" 

đoạn này chuyển backslashes \ vào backslashes đôi \\. Phiên bản sau sẽ hoạt động nếu bạn muốn chuyển đổi backslahes để chuyển tiếp các dấu gạch chéo /.

snippet pp 
    "`r gsub("\\\\", "/", readClipboard())`" 

Khi đoạn ưa thích của bạn được xác định, dán một đường đi từ clipboard bằng cách gõ p - p - TAB - ENTER (có nghĩa là trang và sau đó là phím tab và sau đó nhập) và đường dẫn sẽ được chèn một cách kỳ diệu với các dấu phân cách thân thiện với R.

0

Cách tốt nhất để giải quyết vấn đề này trong trường hợp tệp txt chứa dữ liệu để khai thác văn bản (lời nói, bản tin, v.v.) là thay thế "\" bằng "/".

Ví dụ:

file<-Corpus(DirSource("C:/Users/PRATEEK/Desktop/training tool/Text Analytics/text_file_main")) 
1

Replace lại slashes \ với dấu gạch chéo/khi chạy cửa sổ máy