Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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_Logical Operators - Fatal编程技术网

R中的ifelse语句

R中的ifelse语句,r,logical-operators,R,Logical Operators,我正在研究10个人的基因。这个基因有两个等位基因,比如a和b。每个等位基因有3种形式:2型、3型或4型 a <- c(2, 2, 2, 2, 3, 3, 3, 2, 4, 3) b <- c(4, 2, 3, 2, 4, 2, 3, 4, 4, 4) aEDIT:除了加和等于之外,实际上不需要ifelse或任何奇特的操作 var <- (a == 4) + (b == 4) 但是,我更喜欢使用apply的以下解决方案。下面将给出三种情况,结果是该人员拥有的4个(假设每行是一

我正在研究10个人的基因。这个基因有两个等位基因,比如
a
b
。每个等位基因有3种形式:2型、3型或4型

a <- c(2, 2, 2, 2, 3, 3, 3, 2, 4, 3)
b <- c(4, 2, 3, 2, 4, 2, 3, 4, 4, 4)

aEDIT:除了加和等于之外,实际上不需要ifelse或任何奇特的操作

var <- (a == 4) + (b == 4)
但是,我更喜欢使用
apply
的以下解决方案。下面将给出三种情况,结果是该人员拥有的4个(假设每行是一个人)

布尔在加法下被解释为整数,所以

> FALSE + TRUE
[1] 1
4来自a还是b似乎无关紧要,因此我们最终得到三种情况:0、1和2,这取决于4的数量

var <- ifelse(a == 4, 1, 0) + ifelse(b == 4, 1, 0)
a = c(2, 2, 2, 2, 3, 3, 3, 2, 4, 3)
b = c(4, 2, 3, 2, 4, 2, 3, 4, 4, 4)

d <- cbind(a,b)

apply(d, 1, function(x) {sum(x == 4)})
> d[1, ]
a b 
2 4

> d[1, ] == 4
a     b 
FALSE  TRUE
> FALSE + TRUE
[1] 1