我有两个长度相同的向量-都是因数。我想逐个位置比较它们,看看有多少不同。例如
> a = as.factor(c(1,2,2,1,2,2,1))
> b = as.factor(c(1,2,1,1,1,2,1))
Run Code Online (Sandbox Code Playgroud)
由于位置3和位置5有两个不同的值,因此我希望得到2作为最终结果。我知道我可以将它们转换为数字并进行减法运算,但是如果值是字符串怎么办,例如
a = as.factor(c("a","a","b"))
b = as.factor(c("a","b","b"))
Run Code Online (Sandbox Code Playgroud)
是否有任何优雅,通用的方式来做到这一点?
如果您正在寻找一个通用的解决方案,则必须确保两个因素的水平相同:
ab_levels <- unique(c(levels(a), levels(b)))
Run Code Online (Sandbox Code Playgroud)
之后,您可以简单地总结一下:
sum(factor(a, ab_levels) == factor(b, ab_levels))
Run Code Online (Sandbox Code Playgroud)
如果不调整电平,则table+ ==和sum将在以下情况下失败:
> a <- as.factor(c("a","a","c"))
> b <- as.factor(c("a","b","b"))
> table(a == b)
Error in Ops.factor(a, b) : level sets of factors are different
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用table无==:
> tbl <- table(a, b)
> sum(tbl) - sum(diag(tbl))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
421 次 |
| 最近记录: |