R中的is.element函数用于检查字符向量

时间:2017-07-13 11:53:03

标签: r

我正在使用is.element来查找字符向量中的特定字母。我从一个看起来像这样的序列开始(DNA序列):

DNA="cagcatcggctgca"

然后我用以下方法拆分它:

DNA_split=strsplit(DNA,split="")

我得到了

[[1]]
 [1] "c" "a" "g" "c" "a" "t" "c" "g" "g" "c" "t" "g" "c" "a"

然后我使用is.element函数

is.element("a",DNA_split)

我得到[1] FALSE

然而"a"位于DNA_split向量中。有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:1)

可能有几个答案:

> DNA_split
[[1]]
 [1] "c" "a" "g" "c" "a" "t" "c" "g" "g" "c" "t" "g" "c" "a"

所以你的DNA_split是一个列表,而不是一个向量:

> is.list(DNA_split)
[1] TRUE

您需要做的是选择要使用的向量is.element()

> is.element("a", DNA_split[[1]])
[1] TRUE

或:

is.element("a", unlist(DNA_split))

unlist(DNA_split)DNA_split[[1]]都会返回一个向量:

[1] "c" "a" "g" "c" "a" "t" "c" "g" "g" "c" "t" "g" "c" "a"

答案 1 :(得分:0)

问题是strsplit函数正在使DNA_split成为is.element无法处理的列表。使用unlist进行修复。

DNA <- "cagcatcggctgca"
DNA_split <- strsplit(DNA, split = "")
DNA_split <- unlist(DNA_split)
is.element("a", DNA_split)