首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何才能检验不平等程度的不平等因素呢?

如何才能检验不平等程度的不平等因素呢?
EN

Stack Overflow用户
提问于 2017-03-19 03:12:42
回答 2查看 207关注 0票数 1

例如,假设您正在计算一个80个残基肽中所有相同的残基,当该残基发生在另一个肽中的同一位置时,就会发生匹配。但问题是,水平的数量可能不一样,因为一些字母as代表的肽将出现在一个肽,而不是在下一个。为了简单起见,假设我们在所有三个肽中寻找完全相同的残基(字母在同一位置匹配),所以答案是布尔真假语句,其中TRUE是如果它们都匹配的,FALSE是不匹配的。同样,问题是因素的数量是不一样的,所以您不能测试peptide_x == peptide_y。

编码:

代码语言:javascript
复制
> 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个残基的字母:

代码语言:javascript
复制
> setdiff(LETTERS[1:26], peptide_x)

1 "Y“

所以我们看到"Y“(酪氨酸)缺失了。当你创建随机肽的时候,你可能会遗漏一两个字母,你可以为任何一个肽做这件事。

如果我试图对同等水平的因素进行比较,那么这是可行的:

代码语言:javascript
复制
> x <- c("M", "N", "A", "Q", "C")
> y <- c("N", "M", "A", "C", "Q") 
> xy_frame <- data.frame(x,y)
> xy_frame
> x == y

1假假真假假如你所见,A的匹配,所以第三要素"A“是唯一的真理。

令人震惊的是,这个测试起了作用:

代码语言:javascript
复制
> x <- c("A", "A", "B", "Q", "C")
> y <- c("A", "Q", "C", "D", "R")
> x == y
[1]  TRUE FALSE FALSE FALSE FALSE

即使因素的数量是不同的。因此,我想知道我的数据类型是否有问题,这就是为什么我不能测试这个:

代码语言:javascript
复制
> peptides <- data.frame(peptide_x, peptide_y)
> peptides$peptide_x == peptides$peptide_y

Ops.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个字母不匹配,但它说的是真的!多么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-19 19:49:10

使所有级别都存在,即使它们不存在

代码语言:javascript
复制
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,即使有些向量不存在,这也是可以的。

代码语言:javascript
复制
> 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

或者,您可以将它们转换为字符并进行比较。

票数 2
EN

Stack Overflow用户

发布于 2017-03-19 03:41:23

关于这一守则:

代码语言:javascript
复制
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%操作符使用类似的测试:

代码语言:javascript
复制
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 FALSE
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42882515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档