例如,假设您正在计算一个80个残基肽中所有相同的残基,当该残基发生在另一个肽中的同一位置时,就会发生匹配。但问题是,水平的数量可能不一样,因为一些字母as代表的肽将出现在一个肽,而不是在下一个。为了简单起见,假设我们在所有三个肽中寻找完全相同的残基(字母在同一位置匹配),所以答案是布尔真假语句,其中TRUE是如果它们都匹配的,FALSE是不匹配的。同样,问题是因素的数量是不一样的,所以您不能测试peptide_x == peptide_y。
编码:
> peptide_x <- as.factor(sample(LETTERS[1:26], replace = TRUE, 80))
> peptide_y <- as.factor(sample(LETTERS[1:26], replace = TRUE, 80))
> peptide_z <- as.factor(sample(LETTERS[1:26], replace = TRUE, 80))您可以使用以下命令检查您的肽中丢失了26个残基的字母:
> setdiff(LETTERS[1:26], peptide_x)1 "Y“
所以我们看到"Y“(酪氨酸)缺失了。当你创建随机肽的时候,你可能会遗漏一两个字母,你可以为任何一个肽做这件事。
如果我试图对同等水平的因素进行比较,那么这是可行的:
> x <- c("M", "N", "A", "Q", "C")
> y <- c("N", "M", "A", "C", "Q")
> xy_frame <- data.frame(x,y)
> xy_frame
> x == y1假假真假假如你所见,A的匹配,所以第三要素"A“是唯一的真理。
令人震惊的是,这个测试起了作用:
> x <- c("A", "A", "B", "Q", "C")
> y <- c("A", "Q", "C", "D", "R")
> x == y
[1] TRUE FALSE FALSE FALSE FALSE即使因素的数量是不同的。因此,我想知道我的数据类型是否有问题,这就是为什么我不能测试这个:
> peptides <- data.frame(peptide_x, peptide_y)
> peptides$peptide_x == peptides$peptide_yOps.factor(peptides$peptide_x,peptides$peptide_y)中的错误:因素的水平集是不同的
那么,如果这是问题所在,或者我正在运行正确的测试,那么如何修复我的数据类型呢?
我只想计算非相同因子水平的真假。
评论:
%中的%不能正常工作是因为..。
头(Peptide_x)1 "C“"T”"X“"Z”"M“"A” 头(Peptide_y)1 "R“"G”"T“"U”"G“"U” 头(%peptide_x%(% peptide_y) )1真
例如,每个肽的前6个字母不匹配,但它说的是真的!多么?
发布于 2017-03-19 19:49:10
使所有级别都存在,即使它们不存在
x <- factor(sample(LETTERS[1:26], replace = TRUE, 80), levels = LETTERS)
y <- factor(sample(LETTERS[1:26], replace = TRUE, 80), levels = LETTERS)
z <- factor(sample(LETTERS[1:26], replace = TRUE, 80), levels = LETTERS)注意,我是如何在每个向量中设置相同的levels,即使有些向量不存在,这也是可以的。
> x==y
[1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[14] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
[27] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[40] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[53] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[66] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
[79] FALSE FALSE
> x==z
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[14] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[27] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
[40] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
[53] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[66] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[79] FALSE FALSE
> y==z
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE TRUE FALSE
[14] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
[27] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[40] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
[53] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[66] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[79] FALSE FALSE或者,您可以将它们转换为字符并进行比较。
发布于 2017-03-19 03:41:23
关于这一守则:
x <- c("A", "A", "B", "Q", "C")
y <- c("A", "Q", "C", "D", "R")
R> x == y
[1] TRUE FALSE FALSE FALSE FALSE这是因为您正在将字符向量x与字符向量y进行比较。我只需跳过这些因素,并对%in%操作符使用类似的测试:
R> peptide_x <- sample(LETTERS[1:26], replace = TRUE, 80)
R> peptide_y <- sample(LETTERS[1:26], replace = TRUE, 80)
R> peptide_x %in% peptide_y
[1] TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
[20] TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
[39] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[58] TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE
[77] TRUE TRUE TRUE FALSEhttps://stackoverflow.com/questions/42882515
复制相似问题