Почему R приводит '(главный символ) к' (апострофу), когда я пытаюсь назначить его как простой вектор символов, но не когда я назначаю его непосредственно из списка / таблицы?
К сожалению, Я не могу найти простой способ поделиться данными, что составляет root этой проблемы, но, пожалуйста, выслушайте меня! Он полностью воспроизводится, если вы сохраните очень простой файл .xlsx с одним введенным значением (36 ° 48′31,33): ![enter image description here](https://i.stack.imgur.com/fcR0X.png)
и, надеюсь, через секунду станет ясно, почему я не могу поделиться этим более эффективно.
Если я прочитаю этот файл и распечатаю его:
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