我一直在尝试了解如何处理的输出strsplit
好一些。我经常有这样的数据想要拆分:
mydata <- c("144/4/5", "154/2", "146/3/5", "142", "143/4", "DNB", "90")
#[1] "144/4/5" "154/2" "146/3/5" "142" "143/4" "DNB" "90"
拆分后结果如下:
strsplit(mydata, "/")
#[[1]]
#[1] "144" "4" "5"
#[[2]]
#[1] "154" "2"
#[[3]]
#[1] "146" "3" "5"
#[[4]]
#[1] "142"
#[[5]]
#[1] "143" "4"
#[[6]]
#[1] "DNB"
#[[7]]
#[1] "90"
我从 strsplit 帮助指南中知道不会生成最终的空字符串。因此,根据要分割的“/”的数量,我的每个结果中都会有 1、2 或 3 个元素
获取第一个元素非常简单:
sapply(strsplit(mydata, "/"), "[[", 1)
#[1] "144" "154" "146" "142" "143" "DNB" "90"
但我不确定当每个结果中的元素数量不等时如何获得第二个、第三个......。
sapply(strsplit(mydata, "/"), "[[", 2)
# Error in FUN(X[[4L]], ...) : subscript out of bounds
我希望从工作解决方案中返回,如下:
#[1] "4" "2" "3" "NA" "4" "NA" "NA"
这是一个相对较小的例子。我可以很容易地对这些数据进行一些 for 循环,但是对于具有 1000 个观察值的真实数据来运行 strsplit 以及由此产生的数十个元素,我希望找到一个更通用的解决方案。