2017-12-28 20 views
2

Rには、整数値を持つベクトルがあり、複数の値に対して剰余なしで割り切れるようにチェックされます。モジュロをベクトル化する方法は?

v <- c(3, 4, 10, 11, 12) 
v %% 4 == 0 | v %% 10 == 0 #... this might include 100 checks or more 

私は、マトリックスまたは類似した何かを返すことがあります。この(のようなv %% c(4, 10))のベクトル化を探しています。


私はそれを行うことができます機能をプログラムしますが、すでに私が代わりに再びそれを「再発明」の再利用可能な機能が存在するのだろうか。

`%V%` <- function(x, y){ 
    ret <- matrix(nrow = length(x), ncol = length(y)) 
    for(i in 1:ncol(ret)){ 
    ret[, i] <- x %% y[i] 
    } 
    return(ret) 
} 
v %V% c(4, 10) 

私の当初の目的のために私は今apply(v %V% c(4, 10), 1, function(x) any(x == 0))を実行するかに応じて、私の機能を変更することになります。

+1

をあなたは単に 'sapply(C(4、10)を行うことができます与え

outer(v, c(4,10), '%%') == 0 

、function(i)v %% i) ' – Sotos

+3

または:外部(v、c(4,10)、 '%%')' – Jaap

答えて

3

あなたが望むものを達成するためにouter -functionを使用することができます。

 [,1] [,2] 
[1,] FALSE FALSE 
[2,] TRUE FALSE 
[3,] FALSE TRUE 
[4,] FALSE FALSE 
[5,] TRUE FALSE 
関連する問題