/ / Грешка при импортиране на данни чрез източник (), използвайки Æ като сепаратор в R - r, read.csv

Грешка при импортиране на данни чрез източник (), използвайки Æ като сепаратор в R - r, read.csv

Така че това е необяснима грешка за мен и бих предложил, че е бъг, ако никой няма обяснение:

Имам следния код за импортиране на файл в R:

rm(list = ls())
library(data.table)
DT <- data.table(read.csv("file.csv", header=TRUE, sep = "Æ", quote = "", dec = ",", stringsAsFactors=TRUE, row.names = NULL))

Което работи перфектно. Винаги изнасям данните от Access посредством Æ като сепаратор, защото е хубав характер, който никога не се появява в моите файлове.

Сега за грешката:

Когато създам нов файл ( "Import.r") с кода:

DT <- data.table(read.csv("file.csv", header=TRUE, sep = "Æ", quote = "", dec = ",", stringsAsFactors=TRUE, row.names = NULL))

И използвайте източника в оригиналния код:

rm(list = ls())
library(data.table)
source("import.r")

Получавам грешката:

Error in scan(file, what = "", sep = sep, quote = quote, nlines = 1, quiet = TRUE,  :
invalid "sep" value: must be one byte

Интересното е, че ако не използвам Æ като сепаратор, но | тя работи перфектно при зареждането на файла. Така че грешката очевидно е причинена от използването Æ като сепаратор (както е посочено в грешката така или иначе).

Но как една и съща команда за импортиране може да работи добре, когато се извика директно, но връща привидно несвързана грешка, когато се обажда чрез source()?

РЕДАКТИРАНЕ: Четенето на героя чрез различни кодировки връща различни резултати:

> readLines(textConnection("Æ",encoding="utf-8"))
[1] "Æ"
> readLines(textConnection("Æ"))
[1] "Æ"

обстановка UTF-8 кодиране в кода, както Джеймс предложи в отговора си странно работи и файлът се импортира правилно.

Отговори:

1 за отговор № 1

Изглежда, че това е въпрос на кодиране. При четене Æ чрез текстова връзка с utf-8 кодиране получавате 2 знака, връщани:

readLines(textConnection("Æ",encoding="utf-8"))
[1] "Æ"

Странно обаче, задаването на utf-8 като кодиране при снабдяване позволява данните да се четат правилно.