Вы не можете использовать seek
, когда выбираете перекодировку текста в "UTF-8" в file
Это в файле справки для seek
:
Ни один из них не должен работать на соединениях в текстовом режиме с выбранной перекодировкой.
Чтобы показать это, я могу повторить вашу проблему:
write.csv(data.frame(a = rnorm(5), b = letters[1:5]), "my.csv")
con <- file("my.csv", "rt", encoding = "UTF-8")
x <- readLines(con)
seek(con, 0)
#> [1] 149
y <- readLines(con)
close(con)
y
#> character(0)
И Я могу это исправить, запустив точно такой же код, за исключением удаления encoding = "UTF-8"
из file()
:
write.csv(data.frame(a = rnorm(5), b = letters[1:5]), "my.csv")
con <- file("my.csv", "rt")
x <- readLines(con)
seek(con, 0)
#> [1] 149
y <- readLines(con)
close(con)
y
#> [1] "\"\",\"a\",\"b\"" "\"1\",-0.989039082667898,\"a\""
#> [3] "\"2\",0.304563032422747,\"b\"" "\"3\",0.876861603714057,\"c\""
#> [5] "\"4\",0.430749580251368,\"d\"" "\"5\",-0.464997645114009,\"e\""
Если вы специально хотите прочитать файл как UTF-8, откройте его в режиме rt
и укажите кодировку в readLines
df <- data.frame(a = rnorm(5), b = c(letters[1:4], "\u0986"))
write.csv(df, "my.csv", fileEncoding = "UTF-8")
con <- file("my.csv", "rt")
x <- readLines(con, encoding = "UTF-8")
seek(con, 0)
#> [1] 149
y <- readLines(con, encoding = "UTF-8")
close(con)
y
#> [1] "\"\",\"a\",\"b\"" "\"1\",0.250961986479494,\"a\""
#> [3] "\"2\",-0.874891848118619,\"b\"" "\"3\",-0.394876527760101,\"c\""
#> [5] "\"4\",0.358779166473852,\"d\"" "\"5\",1.5209073992579,\"<U+0986>\""