R给出了奇怪的警告“条件长度> 1,只使用第一个元素”

时间:2015-10-13 22:23:30

标签: r

我正在尝试在R中编写以下函数:它将从包含逗号分隔部分的字符串构造修剪字符串部分的向量。

# parse string into vector of trimmed comma-separated parts
parseLine<-function(str)
{
    inputVector = strsplit(str, ",")
    outputVector = c()
    for(s in inputVector)
    {
        s = gsub("^\\s+|\\s+$", "", s)
        if(nchar(s) > 0)
            outputVector = c(outputVector, s)
    }
    return(outputVector)
}

成功解析此函数定义。 但是,当我这样执行时:

parseLine("a,   b, c, d")

我得到了结果,但也有一个奇怪的警告:

[1] "a" "b" "c" "d"
Warning message:
In if (nchar(s) > 0) outputVector = c(outputVector, s) :
  the condition has length > 1 and only the first element will be used

我的问题是:

  • 这是什么意思?
  • 我能做些什么来摆脱它?

1 个答案:

答案 0 :(得分:1)

更新:我找到了正确的解决方案。问题是strsplit()给出了一个列表作为其输出。

# parse string into vector of trimmed comma-separated parts
parseLine<-function(str)
{
    inputVector = strsplit(str, ",", TRUE)[[1]] # <<< here was the list
    outputVector = c()
    for(s in inputVector)
    {
        s = gsub("^\\s+|\\s+$", "", s)
        if(nchar(s) > 0)
            outputVector = c(outputVector, s)
    }
    return(outputVector)
}