r - 使用 strsplit 以三种方式拆分变量

标签 r strsplit

我有一个变量,我想拆分...每一行都不同,但它要么有 2 个由“,”分隔的字符串表达式; 3个字符串表达式,用','分隔; 1个字符串表达式;或者什么都没有

例如:

     indel
row1 +1C
row2 +1C,+2CC
row3 0
row4 +1C,+2CC,-1C

基本上我想做的是为可能的三个字符串表达式中的每一个创建 3 个不同的变量。当然,有些行会有 2 个、1 个或没有。

我已经能够使用以下方法为前两个字符串表达式拆分并创建两个不同的变量:

mito$indel1 <- sapply(strsplit(as.character(mito$indel),","),function(x) x[1])
mito$indel2 <- sapply(strsplit(as.character(mito$indel),","),function(x) x[2])

当然,还有第三个字符串表达式。我正在考虑创建一个临时的 indel2 变量,然后再次将其拆分为第三个,但是使用上面的 R 脚本的问题是它将变量创建为:

     indel         Indel1    Indel2
row1 +1C           +1C       NA
row2 +1C,+2CC      +1C       +2CC
row3 0             0         NA
row4 +1C,+2T,-1C   +1C       +2T

我确定这与字符串中的第二个“,”有关,R 变得很困惑。但是有没有一种方法可以克服这个问题而不必为每一行编辑整个变量。

我也试过以下但没有成功:

mito$indel2 <- sapply(strsplit(sapply(strsplit(as.character(mito$indel),","),function(x) x[2]),","),function(x) x[1])
mito$indel3 <- sapply(strsplit(sapply(strsplit(as.character(mito$indel),","),function(x) x[2]),","),function(x) x[2])

任何帮助将不胜感激。

最佳答案

您也可以为此使用 read.table

read.table(text=as.character(dat$V1), sep=',', fill=TRUE, as.is=TRUE)
#    V1   V2  V3
# 1 +1C         
# 2 +1C +2CC    
# 3   0         
# 4 +1C +2CC -1C

关于r - 使用 strsplit 以三种方式拆分变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21467219/

相关文章:

r - 按条件应用 strsplit

python - 在Python中将所有内容保留在最后一个 '/'的左侧

html - 使用 xpathSApply 的相同代码搜索多个路径

r - 使用索引过滤 data.frame 的行

r - 导入excel文件

R-使用str_split和unlist创建两列

从字符串中删除特定模式

R strsplit 保留最后一个空元素为空字符串

r - do.call 指定函数内部的环境

r - 在R中提取直到双下划线的子字符串