Сравнение строк в R - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь сравнить две строки в R. Пожалуйста, посоветуйте, как сравнить n и reversed_split в приведенном ниже коде R.

n= readLines(file("stdin"))
string <- strsplit(as.character(n), "")
string = unlist(string)
reversed_split = string[nchar(n):1]

if(string == reversed_split)
 print("Indeed")
else
 print("Not At All")

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Вы можете использовать функцию identitcal из пакета base, чтобы помочь вам сравнить векторы символов, которые возвращают TRUE или FALSE, которые можно использовать в условных выражениях. заявления:

ifelse(identical(c("a", "s"), c("a", "s")), "Indeed", "Not At All")
# Your question could be solved as:
ifelse(identical(string, reversed_split), "Indeed", "Not At All")
0 голосов
/ 01 мая 2018

Вы не можете сравнивать 2 вектора в выражении if(). if() принимает одно условие TRUE или FALSE. Вы можете добавить all() функцию, и она будет работать:

n <- c("madam" )
string <- strsplit(as.character(n), "")
string = unlist(string)
reversed_split = string[nchar(n):1]

if (all(string == reversed_split) )  print("Indeed") else print("Not At All")

Вот вывод:

> if (all(string == reversed_split) )  print("Indeed") else print("Not At All")
[1] "Indeed"

Может оказаться полезным использовать библиотеку stringi:

library(stringi)
stri_reverse("madam")
## [1] "madam"
stri_reverse("sir")
## [1] "ris"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...