R中的字符串比较

时间:2018-05-01 10:11:47

标签: r

我正在尝试比较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")

2 个答案:

答案 0 :(得分:0)

您无法在if()语句中比较2个向量。 if()接受一个TRUEFALSE条件。您可以添加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函数来帮助您比较字符向量,这些向量返回TRUEFALSE可以在条件语句中使用:

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")