我对R及其复杂性很陌生。我遇到一种情况,我必须区分用户是将值键入为字符还是作为字符向量的变量。我可以使用什么条件来区分下面提供的以下语法?
c1 <- "text"
c2 <- c("text")
c1和c2的类型返回character
,而c1 == c2
返回TRUE
。 R是否将两者(c1和c2)本质上都视为相同,还是给出一种变通办法来表明它们是不同的,如果是,则如何?
答案 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的描述中看到它。
出于可访问性原因,我将在此处提供一个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