Чтение CSV, содержащего смайлики из Google Sheets, не удается - PullRequest
0 голосов
/ 11 февраля 2020

Я провел опрос в Google Forms и отправил результаты в Google Sheets.

Затем я попытался загрузить результаты в R:

url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vRkkjx8AOgNdfDW9wtaHR8wtMQOrgTB1O1wwMcJLGre3E_MixhEaIGUI7gfHw5gBQX7-gcNkRUkMM3X/pub?output=csv'

google <- read.csv(url, sep = ',',  header = T, fileEncoding = "UTF-8")

и столкнулся с проблемой:

Warning:
In scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  incorrect input found in input connection 'https://docs.google.com/spreadsheets/d/e/2PACX-1vRkkjx8AOgNdfDW9wtaHR8wtMQOrgTB1O1wwMcJLGre3E_MixhEaIGUI7gfHw5gBQX7-gcNkRUkMM3X/pub?output=csv'

В мой набор данных R. было импортировано всего 96 строк.

Я проверил свои Google Sheets и увидел, что 96-я строка содержит смайлики и перестает загружать другие строки. Что мне делать там или какую кодировку выбрать, чтобы иметь возможность читать смайлики в R?

Версия R: 1.2.5033

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Благодаря Аллану, вы мне очень помогли!

Я нашел другое решение.

url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vRkkjx8AOgNdfDW9wtaHR8wtMQOrgTB1O1wwMcJLGre3E_MixhEaIGUI7gfHw5gBQX7-gcNkRUkMM3X/pub?output=csv'
df = readLines(url, encoding = "UTF-8")
df     <- read.table(text = df,
                     sep = ",", 
                     fileEncoding = "UTF-8", 
                     stringsAsFactors = FALSE)

Затем я воспользовался функцией просмотра, чтобы проверить мои строки с помощью смайликов, и он показывает это мне правильно.

1 голос
/ 11 февраля 2020

Вы можете попытаться загрузить содержимое файла как символьный вектор, а затем вручную удалить эмодзи перед загрузкой данных.

Удаление очень высоких значений UTF-8 - грубый, но эффективный способ удаления из смайликов.

remove_emojis <- function(strings)
{
  sapply(strings, function(x) intToUtf8(utf8ToInt(x)[-which(utf8ToInt(x) > 100000)]))
}

google <- remove_emojis(readLines(url, encoding = "UTF-8"))
df     <- read.table(text = google,
                     sep = ",", 
                     fileEncoding = "UTF-8", 
                     stringsAsFactors = FALSE)
...