Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何比较两列并将结果写入第三列-使用R_R_Dataframe - Fatal编程技术网

如何比较两列并将结果写入第三列-使用R

如何比较两列并将结果写入第三列-使用R,r,dataframe,R,Dataframe,X1是主队的列 goals X1 X2 1 1 1 2 4 0 3 0 0 4 2 1 5 1 1 6 1 1 7 1 1 8 0 0 ... 如果我键入嵌套的elseif,我会在控制台中得到正确的结果 > ifelse(goals$X1 > goals$X2, goals$winner <- "h",ifelse(goals$X1 < goals$X2, goals$winner &l

X1是主队的列

  goals
    X1 X2
1    1  1
2    4  0
3    0  0
4    2  1
5    1  1
6    1  1
7    1  1
8    0  0
...
如果我键入嵌套的elseif,我会在控制台中得到正确的结果

> ifelse(goals$X1 > goals$X2, goals$winner <- "h",ifelse(goals$X1 < 
   goals$X2, goals$winner <- "d",goals$winner <- "a"))

  [1] "a" "h" "a" "h" "a" "a" "a" "a" "h" "h" "h" "h" "h" "a" "h" "a" "a" "h"
 [19] "h" "a" "h" "h" "h" "d" "h" "h" "h" "h" "a" "a" "a" "d" "d" "h" "d" "h"
 [37] "h" "h" "a" "a" "h" "h" "a" "h" "h" "h" "h" "h" "h" "h" "a" "h" "h" "h"
 [55] "h" "a" "h" "h" "h" "h" "h" "a" "h" "h" "h" "h" "d" "h" "h" "a" "h" "a"
 [73] "d" "h" "d" "h" "h" "h" "h" "h" "h" "a" "d" "h" "d" "h" "d" "d" "d" "a"
 [91] "h" "h" "h" "d" "a" "h" "h" "h" "h" "h" "h" "h" "d" "h" "h" "a" "d" "h"
[109] "h" "a" "d" "h" "h" "h" "h" "h" "a" "d" "d" "h" "h" "h" "h" "h" "h" "h"
[127] "h" "a" "h" "h" "h" "h" "h" "a" "h" "a"

我哪里错了?

您的问题是因为您在ifelse中更新了winner列。要做你想做的事,你必须做:

goals$winner <-ifelse(goals$X1 > goals$X2,  "h",ifelse(goals$X1 < goals$X2, "d", "a"))
goals$winner goals$X2,“h”,ifelse(goals$X1
您没有以正确的方式使用ifelse:

ifelse(test_expression,x,y)
这里,test_表达式必须是逻辑向量(或者可以强制为逻辑向量的对象)。返回值是一个与test_表达式长度相同的向量

如果test_表达式的对应值为TRUE,则此返回向量包含来自x的元素,如果test_表达式的对应值为FALSE,则返回向量包含来自y的元素。您不应尝试在这里分配
ifelse
中的值,而应将整个
ifelse
完全分配给新对象

goals$winner <- ifelse(goals$x1 > goals$x2, "h", ifelse(goals$x1 < goals$x2, "d", "a"))
答复:

df
  x1 x2 winner
1  1  1      a
2  4  0      h
3  0  0      a
4  2  1      h
5  1  1      a
6  1  1      a
7  1  1      a
8  0  0      a
> 

goals$winner goals$X2,“h”,ifelse(goals$X1
感谢您解决了这个问题。加上卡比尔的解释,我学到了很多!
df <- data.frame(x1 = c(1,4,0,2,1,1,1,0),x2=c(1,0,0,1,1,1,1,0))
df$winner <- NULL
df[df$x1 > df$x2,"winner"] <- "h"
df[df$x1 < df$x2,"winner"] <- "d"
df[df$x1 == df$x2,"winner"] <- "a"
df
  x1 x2 winner
1  1  1      a
2  4  0      h
3  0  0      a
4  2  1      h
5  1  1      a
6  1  1      a
7  1  1      a
8  0  0      a
>