Подсчет количества символов в многословном векторе R - PullRequest
1 голос
/ 12 апреля 2020

Я пытаюсь решить проблему 17 на проекте Euler . Цель состоит в том, чтобы перечислить все числа от 1 до 1000 и посчитать, сколько там букв (исключая пробелы и дефисы). Вместо того, чтобы делать это с помощью базовых функций, я использую библиотеки stringr и english. Тем не менее, мой ответ несколько тысяч. Вот мой код:

library(english)
library(stringr)
words <- as.character(as.english(c(1:1000))) # transforming numbers to letters
words2 <- str_remove_all(words," ") # removing emtry spaces
words2 <- str_remove_all(words2,"-") # removing hyphens
length(as.vector(unlist(strsplit(words2,"")))) # finding the number of letters there is

Возвращение этого кода - 18451. Я могу решить эту проблему с помощью базы R, но мне интересно, что я здесь сделал неправильно. Цель состоит в том, чтобы получить правильный ответ (см. Ниже), используя 2 библиотеки, упомянутые выше. Правильный ответ:

1 Ответ

1 голос
/ 12 апреля 2020

Проблема заключается в том, что слова, возвращаемые english по умолчанию (в стиле США), не включают в себя некоторые слова, такие как 'и'

library(english)
library(stringr)
english(342)
#[1] three hundred forty-two

english(342, USA = TRUE)
#[1] three hundred forty-two

, пока возникает проблема.

342 (three hundred and forty-two) 

, что соответствует стилю Briti sh.

Теперь, если мы изменим значение по умолчанию с США на Великобританию

english(342, UK = TRUE)
#[1] three hundred and forty-two

Использование Брити sh стиль

nchar(str_c(str_remove_all(english(1:1000, UK = TRUE), "[- ]"), collapse=""))
#[1] 21124
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...