在R中,当比较2个数据帧

时间:2016-03-03 13:57:05

标签: r dataframe factors

我有2个数据框(A和B,每个包含5列),由2个.csv文件创建。我想比较A中的2列(A1_maj和A2_min)和B中的2列,它们包含A,T,C,G类的值。这是一个例子:

A:                         B:

A1_maj  A2_min              A1_maj  A2_min
C       T                   C       T                   
C       T                   C       T 
G       A                   G       A
G       A                   A       G
T       C                   G       A

我有一个很长的代码,但我遇到了一个命令。每当我尝试使用以下逻辑语句比较A和B中的列时,我会收到一条错误消息:

逻辑陈述:

A$A1_maj == B$A2_min
A$A1_maj != B$A2_min

错误讯息:

Error in Ops.factor(A$A1_maj, B$A2_min) :
level sets of factors are different

另一方面,当我包含这样的逻辑语句(见下文)时,我得到一个正确的输出(TRUE或FALSE值):

A$A1_maj != B$A1_maj

我在之前的帖子中读到,当我创建数据框时,我应该包含“stringsAsFactors = FALSE”,因为我可能已经将字符向量转换为因子,但这没有任何区别

欢迎任何建议!

1 个答案:

答案 0 :(得分:0)

@Roland建议的解决方案是将A和B中的所有因子转换为字符:

i <- sapply(A, is.factor)
A[i] <- lapply(A[i], as.character)

i <- sapply(B, is.factor)
B[i] <- lapply(B[i], as.character)