长度为n的向量矢量用于矢量化ifelse的长度为1(或与测试形状不同)的测试?

时间:2017-09-06 00:59:30

标签: r if-statement

是否有向量化机制将不同形状的矢量返回到R的ApplicationUser函数中的测试对象?

The function is designed to return objects of the same shape as the test object:

ifelse(test, yes, no)

但即使我们偷偷摸摸并尝试分配对象以便输入单个长度的名称,结果也是一样的:

> ifelse(TRUE, c(1, 3), 7)
[1] 1

笨重的控制结构起作用:

> x <- c(1,3)
> ifelse(TRUE, x, 7)
[1] 1

但有没有一种矢量化方法来实现这个目标?

[编辑:这是向this one询问输入矩阵的另一个问题,而这是在询问输入向量,即使答案结果相似。] < / p>

1 个答案:

答案 0 :(得分:1)

1)如果通常在这种情况下只使用普通if

out <- if (TRUE) c(1, 3) else 7
out
## [1] 1 3

2)替换要考虑的另一个构造是:

replace(c(1, 3), !TRUE, 7)
## [1] 1 3

3)ifelse / list 如果您真的想使用ifelse,这可行:

ifelse(TRUE, list(c(1, 3)), list(7))[[1]]
## [1] 1 3