АК
fread
сработал гладко?Size: a a a
АК
fread
сработал гладко?AS
iconv
?АК
iconv
?АК
AS
АК
> library(data.table)
>
> tmp1 <- tempfile()
> dt1 <- data.table(
+ "Столбец А" = "Текст"
+ )
> fwrite(dt1, tmp1)
> tmp2 <- tempfile()
> system(sprintf("iconv -f utf8 -t cp1251 %s > %s", tmp1, tmp2))
> str(fread(file = tmp2, encoding = "UTF-8"))
Classes 'data.table' and 'data.frame': 1 obs. of 1 variable:
$ ������� �: chr "\xd2\xe5\xea\xf1\xf2"
- attr(*, ".internal.selfref")=<externalptr>
> str(fread(cmd = sprintf("iconv -f cp1251 -t utf8 %s", tmp2)))
Classes 'data.table' and 'data.frame': 1 obs. of 1 variable:
$ Столбец А: chr "Текст"
- attr(*, ".internal.selfref")=<externalptr>
>
> read_file <- function(path, enc = uchardet::detect_file_enc(path)) {
+ con <- file(path, encoding = enc)
+ on.exit(close(con))
+ res <- readLines(con)
+ res <- paste(res, collapse = "\n")
+ return(res)
+ }
> str(fread(text = read_file(tmp2)))
Classes 'data.table' and 'data.frame': 1 obs. of 1 variable:
$ Столбец А: chr "Текст"
АК
> library(data.table)
>
> tmp1 <- tempfile()
> dt1 <- data.table(
+ "Столбец А" = "Текст"
+ )
> fwrite(dt1, tmp1)
> tmp2 <- tempfile()
> system(sprintf("iconv -f utf8 -t cp1251 %s > %s", tmp1, tmp2))
> str(fread(file = tmp2, encoding = "UTF-8"))
Classes 'data.table' and 'data.frame': 1 obs. of 1 variable:
$ ������� �: chr "\xd2\xe5\xea\xf1\xf2"
- attr(*, ".internal.selfref")=<externalptr>
> str(fread(cmd = sprintf("iconv -f cp1251 -t utf8 %s", tmp2)))
Classes 'data.table' and 'data.frame': 1 obs. of 1 variable:
$ Столбец А: chr "Текст"
- attr(*, ".internal.selfref")=<externalptr>
>
> read_file <- function(path, enc = uchardet::detect_file_enc(path)) {
+ con <- file(path, encoding = enc)
+ on.exit(close(con))
+ res <- readLines(con)
+ res <- paste(res, collapse = "\n")
+ return(res)
+ }
> str(fread(text = read_file(tmp2)))
Classes 'data.table' and 'data.frame': 1 obs. of 1 variable:
$ Столбец А: chr "Текст"
read_file
, кстати, на винде тоже будет работать. Проблемы будут только с UTF-16.AS
АК
stringi::stri_read_lines
также позволяет указать кодировку, чтобы не использовать connection.AS
АК
stringi
пакетов, закрывающих вопрос почти нет. Ну и uchardet для автодетекта, но и он не идеален.АК
N
AS
ВП
ВП
АК
setwd
, абсолютные пути или что-то подобное...N
setwd
, абсолютные пути или что-то подобное...PU
PU