ho primo vettore, ad esempio: x=1:10
e secondo con numeri primi, ad esempio y=c(2,3,5,7)
Divisione due vettori
E voglio sorta vettore x: divisibile per 2, divisibile per 3, ecc Così, l'uscita sarebbe simile a questa: 2 4 6 8 10 3 9 5 7
ho primo vettore, ad esempio: x=1:10
e secondo con numeri primi, ad esempio y=c(2,3,5,7)
Divisione due vettori
E voglio sorta vettore x: divisibile per 2, divisibile per 3, ecc Così, l'uscita sarebbe simile a questa: 2 4 6 8 10 3 9 5 7
utilizzando apply
loop e mod
:
unique(unlist(sapply(y, function(i)x[x%%i == 0])))
# [1] 2 4 6 8 10 3 9 5 7
o utilizzando as.logical
invece di ==
, suggerito da @ZheyuanLi:
unique(unlist(sapply(y, function(i) x[!as.logical(x%%i)])))
approccio simile utilizzando expand.grid invece di applicare:
xy <- expand.grid(x, y)
unique(xy[ xy[,1]%%xy[,2] == 0, 1])
Un'altra opzione è
unique(rep(x, length(y))[rep(x, length(y))%% rep(y, each = length(x))==0])
#[1] 2 4 6 8 10 3 9 5 7