Я пытаюсь сравнить две строки в 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")
if (all(string == reversed_split))
. И вам нужно открывать и закрывать {
, }
в заявлении if
. Также используйте n <- readline()
.
Вы не можете сравнить 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"
Вы можете использовать функцию 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")
не могли бы вы поделиться своим вопросом на каком-нибудь примере ....