2016-06-17 27 views
6

我有第一向量,例如:x=1:10和第二同素數,例如y=c(2,3,5,7)司兩個向量

我想排序向量x:由2整除,被3整除等 所以,輸出應該是這樣的:2 4 6 8 10 3 9 5 7

回答

6

使用apply環和mod

unique(unlist(sapply(y, function(i)x[x%%i == 0]))) 
# [1] 2 4 6 8 10 3 9 5 7 

或者使用as.logical代替==,通過@ZheyuanLi建議:使用expand.grid

unique(unlist(sapply(y, function(i) x[!as.logical(x%%i)]))) 

類似的方法,而不是適用於:

xy <- expand.grid(x, y) 
unique(xy[ xy[,1]%%xy[,2] == 0, 1]) 
0

另一種選擇是

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