矢量化的ifelse难题

时间:2016-04-15 15:27:14

标签: r if-statement vectorization

我有两个数组“begin”和“end_a”,它们包含一些整数索引,但“end_a”中的某些条目是NA

panelDataset是一个包含数据的矩阵。我想采用对应于begin和end_a的非NA条目的panelDataset行的方法。

我这是以串行方式工作,它工作正常,但当我尝试按如下方式对其进行矢量化时

switch_mu=ifelse(!is.na(end_a),mean(panelDataset[begin: end_a,4]),NA)

它出错:Error in begin:end_a : NA/NaN argument.

当我使用NA分别检查end_a的条目is.na(end_a)时,它确实会将数组的正确条目显示为NA。所以,这不是问题。

我知道我错过了一些微不足道的事情。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

means <- apply(na.omit(cbind(begin, end_a)), 1,
      function(x) mean(panelDataset[x[1]:x[2], 4]))
replace(end_a, !is.na(end_a), means)