【发布时间】:2014-01-30 20:55:58
【问题描述】:
我有一个要拆分的变量...每一行都不同,但它要么有 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])
任何帮助将不胜感激。
【问题讨论】:
-
mito$indel3 <- sapply(strsplit(as.character(mito$indel),","),function(x) x[3])没有完成你想要的吗? -
通常这会起作用,但不知何故它不适用于这种情况。可能我在某个地方做错了什么,但我会再试一次..