R: Почему символ «пробел» во внешне сгенерированной строке имеет значение ASCII «NA»? - PullRequest
0 голосов
/ 08 марта 2019

Я работаю с некоторыми данными ответов SurveyMonkey, которые импортирую из файла .xlsx.

Произошло нечто подобное:

> unique(responseColumn)
[1] "This string"
[2] "Something else"

>(responseColumn == unique(responseColumn)[1])
[1] 25

>sum(responseColumn == "This string")
[1] 0

>unique(responseColumn)[1]
[1] "This string"

>unique(responseColumn)[1] == "This string"
[1] FALSE

Очевидно, это сбивало с толку,Я немного поиграл и обнаружил, что могу использовать

writeClipboard(unique(responseColumn)[1])

, чтобы перехватить строку и вставить ее в мой код.

В консоли это выглядело точно так же: «Эта строка».

Однако в моем окне редактирования скрипта это выглядело как:

enter image description here

Я скопировал красную точку в буфер обмена и провел некоторое тестирование:

>readClipboard()
[1] " "

>readClipboard() == " "
[1] FALSE

>utf8toInt(" ")
[1] 32

>utf8toInt(readClipboard())
[1] NA

Что это за загадочный персонаж?Я написал вопросы Обезьяны Обзора и отчетливо помню, как нажимал «пробел» на моей клавиатуре при указании этой опции.Остальные пробелы в ответе остались прежними (на самом деле в данном ответе фактически есть несколько пробелов IRL, и только один из них был преобразован в этот mysteryChar).Что происходит?

1 Ответ

0 голосов
/ 08 марта 2019

Я предполагаю, что «красная» точка - это просто не ASCII-символ, возможно, UTF-8. То, что вы не можете увидеть его в консоли R, не означает, что его по-прежнему нет в буфере обмена Windows. Это может означать, что консоль R неправильно отображает символы UTF-8.

Если ваш инструмент R не отображает символ правильно, рассмотрите возможность его настройки для поддержки UTF-8.

...