Почему R принуждает 'к', когда я пытаюсь назначить его как простой вектор символов, но не когда извлекаю его из объекта списка? - PullRequest
0 голосов
/ 17 июня 2020

Почему R приводит '(главный символ) к' (апострофу), когда я пытаюсь назначить его как простой вектор символов, но не когда я назначаю его непосредственно из списка / таблицы?

К сожалению, Я не могу найти простой способ поделиться данными, что составляет root этой проблемы, но, пожалуйста, выслушайте меня! Он полностью воспроизводится, если вы сохраните очень простой файл .xlsx с одним введенным значением (36 ° 48′31,33): enter image description here

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

Если я прочитаю этот файл и распечатаю его:

library(readxl)
example <- read_xlsx("example.xlsx")
example

#I get this:

# A tibble: 1 x 1
#  latitude   
#  <chr>      
#1 36°48′31.33

что все хорошо выглядит. Однако, если я попытаюсь ввести то же самое, что наша, как односимвольная строка, и назначить / распечатать ее, я вместо этого получу следующее:

coercedExample <- "36°48′31.33"
coercedExample
#[2] "36°48'31.33"

Что теперь печатается с апострофом (') вместо простой символ (′).

Если я использую функцию dput(), она аналогичным образом приводит к значению, даже если я использую ее в таблице, которую производит read_xlsx(), поэтому я не мог просто опубликовать копию данных, прочитанных с моего P C.

Обратите внимание, что это стало проблемой только после перехода на версию 4.0.1 для R (которая установлена ​​на моей машине). Я использую readxl версии 1.3.1 через RStudio версии 1.3.959 на машине Windows 10.

Эта проблема возникла, когда я пытался помочь @ jvan257 с ее проблемой - если вы скопируете и вставите ее код, проблем не возникнет, и он будет работать правильно. Однако, если вы запустите его из исходного файла .xlsx, он будет читать в виде простого символа, как указано выше, и str_replace_all() не заменяет основной символ при использовании вызова:

library(stringr) #Version 1.4.0
stringr::str_replace_all(string = example, pattern = c("°|'|′|″"), repl=" ")

Но он работает для по принуждению, и R, кажется, распознает апостроф и как апостроф, и как главный символ, как показано здесь:

str_replace_all(string = coercedExample, pattern = c("°|′|″"), repl=" ") #only replacing ′ in the string  
#"36 48 31.33" #Works
str_replace_all(string = coercedExample, pattern = c("°|'|″"), repl=" ") #only replacing ' in the string
#"36 48 31.33" #works
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...