在我data.frame
的一个向量x
中,包含以下格式的文本字符串(每个字符串中有六个值(从 0 到 100),用逗号分隔):
x[1] "3,2,4,34,2,9"
x[2] "45,,67,,,"
x[3] ",,,,99,"
这是我遇到问题的实际向量的链接:x.cvs
x.cvs
不幸的是,“0”的值被记录为两个逗号之间,或第一个逗号之前,或最后一个逗号之后的“空无空格”。
首先能够将其转换为:
x[1] "3,2,4,34,2,9"
x[2] "45,0,67,0,0,0"
x[3] "0,0,0,0,99,0"
但最重要的是,我想把这个向量分成6个不同的向量x1、x2、x3、x4、x5、x6,每个向量都从字符串中取值,并将逗号之间的“no space”替换为“0” ,例如,结果应该是:
x1[3] 0
x6[2] 0
如果逗号之间有一个值,我认为 strsplit() 会起作用,但是由于没有值,甚至没有空格,我不确定在没有得到 NA 的情况下正确的方法是什么。
我尝试了以下方法,但它确实给了我很多错误:
x<- as.character(x)
x <- gsub(",,", ",0,", x)
x <- gsub(", ,", ",0,", x)
splitx = do.call("rbind", (strsplit(x, ",")))
splitx = data.frame(apply(splitx, 2, as.numeric))
names(splitx) = paste("x", 1:6, sep = "")
我收到错误...
In rbind(c("51", "59", "59", "60", "51", "51"), c("51", "59", "59", :
number of columns of result is not a multiple of vector length (arg 10994)
In apply(splitx, 2, as.numeric) : NAs introduced by coercion