我有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”,因为我可能已经将字符向量转换为因子,但这没有任何区别
欢迎任何建议!
答案 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)