如何在R中区分字符和字符向量

时间:2018-12-19 20:01:58

标签: r types

我对R及其复杂性很陌生。我遇到一种情况,我必须区分用户是将值键入为字符还是作为字符向量的变量。我可以使用什么条件来区分下面提供的以下语法?

c1 <- "text"
c2 <- c("text")

c1和c2的类型返回character,而c1 == c2返回TRUE。 R是否将两者(c1和c2)本质上都视为相同,还是给出一种变通办法来表明它们是不同的,如果是,则如何?

2 个答案:

答案 0 :(得分:0)

正如avid所指出的那样,c()函数仅仅是一系列项目。注意这里发生了什么:

c1 <- c(1, 2)
c2 <- 3
c3 <- c(c1, c2)
c3
[1] 1 2 3
c4 <- "4"
c5 <- c(c3, c4)
> c5
[1] "1" "2" "3" "4"
c3将c2附加到向量c1上,c5是R中强制的一个示例。由于c4是字符值,因此c5的每个元素都被强制转换为字符。

答案 1 :(得分:0)

由于两个示例都得出向量,所以最好的选择是比较length(c1) == 1。如果长度等于1,c1 可能是一个字符。

您还可以在可搜索包的is.string文档中找到它,更确切地说,可以在参数x here的描述中看到它。

is.string Documentation

出于可访问性原因,我将在此处提供一个R示例。

checkIfString <- function(v) {
  # must be of type character and a vector with a single element
  is.character(v) && length(v) == 1
}

checkIfString("I'm a string") # TRUE
checkIfString(c("still tru")) # TRUE
checkIfString(c("now", "na")) # FALSE
checkIfString(c(12345.12345)) # FALSE