colsplit
中的 reshape2
可用于拆分字符数据:
colsplit(c("A_1", "A_2", "A_3"), pattern="_", c("Letter", "Number"))
Letter Number
1 A 1
2 A 2
3 A 3
在他的论文"Rehaping data with the Reshape Package"中,Hadley Wickham举了一个使用colsplit
将数据拆分成单个字符的例子。他的例子应该通过省略模式参数从数据c("A1", "A2", "A3")
产生上述内容。但这会引发错误。
str_split_fixed
colsplit
来电说明设置pattern=""
将分成单个字符的文档,但这不起作用。
有没有办法使用colsplit
以便它分成单个字符。
这是R 3.1.1,包是最新的。
答案 0 :(得分:2)
问题是你指的是一篇关于“重塑”但正在使用“reshape2”的文章。两者不一样,但它们的工作方式不同:
library(reshape)
library(reshape2)
reshape:::colsplit(c("A1", "A2", "A3"), "", c("V1", "V2"))
# V1 V2
# 1 A 1
# 2 A 2
# 3 A 3
reshape2:::colsplit(c("A1", "A2", "A3"), "", c("V1", "V2"))
# V1 V2
# 1 NA A1
# 2 NA A2
# 3 NA A3
如果您不必采用colsplit
方式,还有其他选择:
do.call(rbind, strsplit(c("A1", "A2", "A3"), "", fixed = TRUE))
# [,1] [,2]
# [1,] "A" "1"
# [2,] "A" "2"
# [3,] "A" "3"
或者,更通用的方法(例如字符后跟数字,不一定是每个字符):
do.call(rbind, strsplit(c("A1", "A2", "A3"),
split = "(?<=[a-zA-Z])(?=[0-9])",
perl = TRUE))
# [,1] [,2]
# [1,] "A" "1"
# [2,] "A" "2"
# [3,] "A" "3"
答案 1 :(得分:1)
使用qdap
:
library(qdap)
colSplit(c("A1", "A2", "A3"), "")
## X1 X2
## 1 A 1
## 2 A 2
## 3 A 3