在r中相交比较向量

在r中相交比较向量,r,vector,compare,intersect,R,Vector,Compare,Intersect,我有一个4列的数据框,这里是结构 如果我的所有行都有数字1,我想创建一个值为1的新向量(valuetofind),如果我的所有行都有数字-1,则创建一个值为-1的新向量。 其他的我们只是用NA填充 str(results) 'data.frame': 435 obs. of 4 variables: $ model.knn: Factor w/ 2 levels "-1","1": 2 2 2 2 2 2 2 1 2 2 ... $ p.arbre : Factor w/ 2 lev

我有一个4列的数据框,这里是结构

如果我的所有行都有数字1,我想创建一个值为1的新向量(valuetofind),如果我的所有行都有数字-1,则创建一个值为-1的新向量。
其他的我们只是用NA填充

str(results)
'data.frame':   435 obs. of  4 variables:
 $ model.knn: Factor w/ 2 levels "-1","1": 2 2 2 2 2 2 2 1 2 2 ...
 $ p.arbre  : Factor w/ 2 levels "-1","1": 2 2 1 1 2 2 2 1 2 2 ...
 $ p.svm    : Factor w/ 2 levels "-1","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ p.rf     : Factor w/ 2 levels "-1","1": 2 2 2 1 2 2 2 1 2 2 ...


model.knn p.arbre p.svm p.rf  Valuetofind
    1        1      1    1         1
   -1       -1      1    1        NA
   -1       -1     -1   -1        -1
我一直在尝试很多事情,但是我被阻止了

我试图转换成数字,数据框中的facor。它给我的值是2和1,而不是我的-1和1。

使用嵌套的
ifelse()
rowSums()
作为
base
解决方案

results <- data.frame(model.knn = c(1, -1, -1), p.arbre = c(1, -1, -1), p.svm = c(1, 1, -1), p.rf = c(1, 1, -1))

results["Valuetofind"] <- ifelse(rowSums(results) == ncol(results), 1, 
                                  ifelse(rowSums(results) == -ncol(results), -1, NA))

results
  model.knn p.arbre p.svm p.rf Valuetofind
1         1       1     1    1           1
2        -1      -1     1    1          NA
3        -1      -1    -1   -1          -1

结果尝试
as.numeric(as.character())
在@AntoniosK上展开,尝试
2*as.numeric(as.character())-1
获取值
-1
1
@ruibradas坏建议。如果您想对数据进行强有力的假设(或者如果您想将具有两个任意级别的因子转换为-1,1),您可以执行
2*as.numeric()-1
,但是由于级别已经是
“-1”
“1”
as.numeric(as.character())
,因此
as.numeric(as.character())
将非常有效,您的建议中的
as.character
是一个bug,将产生一个坏结果。@Gregor Right。我发现了另一个bug,OP想要
-1
1
如果所有值都是
-1
或`1
,否则
NA`。我会回答的。谢谢,现在转换不是什么问题。我正在寻找一种有效的方法来比较向量