我正在尝试比较R中的两个字符串。请告知如何在下面的R代码中比较n和reversed_split。
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")
答案 0 :(得分:0)
您无法在if()
语句中比较2个向量。 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"
答案 1 :(得分:0)
您可以使用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")