R中字符串和字符有什么区别?

时间:2013-08-29 14:06:40

标签: string r

我对R不太熟悉,但无论如何我正在为一个c库编写一个R包装器。我遇到了这个问题。如何判断输入参数是否为字符串?详细说明,我应该这样写:

dyn.load("hello.so")
do_process <- function(str) {
        if(!is.character(str))
            stop("not a character or string");
    result <- .Call("hello", as.character(str))
    return result
}

或者这个:

dyn.load("hello.so")
do_process <- function(str) {
        if(!is.string(str))
            stop("not a character or string");
    result <- .Call("hello", as.string(str))
    return result
}

感谢。

2 个答案:

答案 0 :(得分:9)

is.stringxtable包中的函数。在帮助页面的详细信息部分,它明确指出“这些函数是print.xtable使用的私有函数。它们不打算在别处使用。”

因此,我会避免使用这些功能。

R中,没有string数据类型。相反,它被称为character,您可以使用is.character来执行您所描述的检查。

另外,正如我在评论中提到的,避免使用重要的基本函数作为变量名。具体来说,str用于查看对象的结构。

答案 1 :(得分:3)

在R中,字符串和字符之间没有根本区别。 “string”只是一个包含一个或多个字符的字符变量。

字符向量是一组存储为单个对象的字符串。大多数处理字符输入的R函数都是矢量化的,即它们将为这样的向量中的每个元素返回适当的值。

例如:

# a string containing one character
x <- "a"
nchar(x)
# 1

# a string containing multiple characters
x <- "foo"
nchar(x)
# 3

# a character vector: two strings, each containing three characters
x <- c("foo", "bar")

# length() returns the no. of elements in a vector, NOT the length of each string
length(x)
# 2

# nchar() returns the length of each string in a vector
nchar(x)
# 3 3