R 我如何测试不同级别的因子的不平等性?

R 我如何测试不同级别的因子的不平等性?,r,R,例如,假设您正在计算一个80个残基的肽中所有相同的残基,当残基出现在另一个肽的相同位置时,就会发生匹配。但问题是水平的数量可能不一样,因为一些代表肽的字母[A-Z]会出现在一个肽中,而不会出现在下一个肽中。为简单起见,假设我们在三个肽中寻找完全相同的残基(字母在这些相同的位置匹配),因此答案是布尔真或假陈述,如果它们都匹配,则为真,如果它们不匹配,则为假。再次强调的是,因子的数量是不一样的,所以你不能测试肽x==肽y 编码: > peptide_x <- as.factor(samp

例如,假设您正在计算一个80个残基的肽中所有相同的残基,当残基出现在另一个肽的相同位置时,就会发生匹配。但问题是水平的数量可能不一样,因为一些代表肽的字母[A-Z]会出现在一个肽中,而不会出现在下一个肽中。为简单起见,假设我们在三个肽中寻找完全相同的残基(字母在这些相同的位置匹配),因此答案是布尔真或假陈述,如果它们都匹配,则为真,如果它们不匹配,则为假。再次强调的是,因子的数量是不一样的,所以你不能测试肽x==肽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))
[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 == y
>xyxy\u帧xy\u帧
>x==y
[1] 假假真假 正如你所看到的,A是匹配的,所以第三个元素“A”是唯一的真理

令人震惊的是,该测试有效:

> x <- c("A", "A", "B", "Q", "C")
> y <- c("A", "Q", "C", "D", "R")
> x == y
[1]  TRUE FALSE FALSE FALSE FALSE
>xyx==y
[1] 真假假假假
尽管因素的数量不尽相同。所以我想知道我的数据类型是否有问题,这就是为什么我不能测试这个:

> peptides <- data.frame(peptide_x, peptide_y)
> peptides$peptide_x == peptides$peptide_y
>肽肽$peptide\u x==肽$peptide\u y
运算因子错误(肽$peptide_x,肽$peptide_y): 因素的水平集是不同的

那么,如果这是问题所在,我如何修复数据类型,或者我运行的测试是否正确

我只想计算不同因子水平的真-假

评论:


%中的%是否因为以下原因而无法正常工作

头部(肽x) [1] “C”“T”“X”“Z”“M”“A”

头部(肽_y) [1] “R”“G”“T”“U”“G”“U”

头部(肽x%肽y) [1] 真的真的真的真的


例如,每个肽的前6个字母不匹配,但它表示正确!怎么做

关于本规范:

x <- c("A", "A", "B", "Q", "C")
y <- c("A", "Q", "C", "D", "R")
R> x == y
[1]  TRUE FALSE FALSE FALSE FALSE

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

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)

或者,您可以将它们转换为角色并进行比较

Wow!非常感谢你!真聪明!FWIW,我经常发现因素是非常棘手的,只有在绘制不同水平的图时才有用。如果可能的话,我建议远离他们。是因为…>head(peptide_x)[1]“C”“T”“x”“Z”“M”“A”>head(peptide_y)[1]“R”“G”“T”“U”“G”“U”>head(peptide_x%in%peptide_y)[1]例如,每个肽的前6个字母不匹配,但它说的是真的!谢谢,这似乎很合乎逻辑。我很感激!
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
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)
> 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