我正在尝试在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
我的问题是:
答案 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)
}