a <- data.frame("geneid1"=rep("TabHLH1",3),"geneid2"=c("TabHLH2.1","TabHLH2.2","TabHLH2.3"),"geneid3"=rep("TabHLH3",3))
结果如下:
geneid1 geneid2 geneid3
1 TabHLH1 TabHLH2.1 TabHLH3
2 TabHLH1 TabHLH2.2 TabHLH3
3 TabHLH1 TabHLH2.3 TabHLH3
加载函数包
library(dplyr)
library(tidyr)
将第二列以“.”分列
b <- a %>% separate(geneid2, c("gene","id"), "[.]")
结果如下
geneid1 gene id geneid3
1 TabHLH1 TabHLH2 1 TabHLH3
2 TabHLH1 TabHLH2 2 TabHLH3
3 TabHLH1 TabHLH2 3 TabHLH3
函数split()可以按照分组因子,把向量,矩阵和数据框进行适当的分组。它的返回值是一个列表,代表分组变量每个水平的观测。这个列表可以使用sapply(),lappy()进行处理(apply – combine步骤),得到问题的最终结果。
只是分组,既可以对 向量 分组,也可以对 数据框 分组
参考资料: