Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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/9/spring-boot/5.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中ifelse语句的结果生成新向量?_R - Fatal编程技术网

如何根据r中ifelse语句的结果生成新向量?

如何根据r中ifelse语句的结果生成新向量?,r,R,我试图根据现有变量的值生成两个新变量。这是一个非常简单的操作,但我似乎无法让它在r中的所有向量值上正确运行。我试图从SPSS转换成r,但这个特殊的目标似乎并没有很好地转换成r 对于条件的每个值,我想为一个名为“expect”的新变量生成一个值 if Condition = 1, expect = 0 if Condition = 2, expect = 1 if Condition = 3, expect = 0 if Condition = 4, expect = 1 我如何将其转换为r代码

我试图根据现有变量的值生成两个新变量。这是一个非常简单的操作,但我似乎无法让它在r中的所有向量值上正确运行。我试图从SPSS转换成r,但这个特殊的目标似乎并没有很好地转换成r

对于条件的每个值,我想为一个名为“expect”的新变量生成一个值

if Condition = 1, expect = 0
if Condition = 2, expect = 1
if Condition = 3, expect = 0
if Condition = 4, expect = 1
我如何将其转换为r代码?如何在整个向量上运行这些链接的ifelse语句?我意识到这是一个非常初级的问题,但我已经寻找了相当长的时间,并没有找到解决办法。我收集到的最好的信息是:

expect<-ifelse(Condition == 1, 0, 1, ifelse(Condition == 2, 1, 0, ifelse(Condition == 3, 0, 1, ifelse(Condition == 4, 1, 0))))

expect在新旧值之间创建映射,
map=c(0,1,0,1)
然后子集
expect=map[Condition]
。为基于字符的映射使用名称,
map=c(foo=1,bar=2);不命名(映射[c(“foo”、“foo”、“bar”))

您可以随时玩“code golf”并使其更紧凑,但下面是一个简单的说明:

Condition <- c(1,2,3,4,0,3,4,5)
expect    <- c(NA, NA, NA, NA, NA, NA, NA, NA)

for(i in 1:length(Condition)){
  if (Condition[i] == 1){expect[i] <- 0}
  if (Condition[i] == 2){expect[i] <- 1}
  if (Condition[i] == 3){expect[i] <- 0}
  if (Condition[i] == 4){expect[i] <- 1}
}

expect
[1]  0  1  0  1 NA  0  1 NA

Condition为什么不一次执行两个:
ifelse(Condition==1 | Condition==3,0,1)
假设只有4个可能的值。函数采用以下三个值:
ifelse
Condition,yes,no
。但是,您的代码具有以下条件:
条件,是,否,如果其他…
。用下一个
ifelse
替换
no
,它就会工作。