我有一个变量,我想拆分...每一行都不同,但它要么有 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/