我有第一个向量,例如:x=1:10
,第二个有素数,例如y=c(2,3,5,7)
我希望排序向量x:可被2整除,可被3整除,等等。
所以,输出看起来像这样:2 4 6 8 10 3 9 5 7
答案 0 :(得分: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建议:
unique(unlist(sapply(y, function(i) x[!as.logical(x%%i)])))
使用expand.grid而不是apply:
的类似方法xy <- expand.grid(x, y)
unique(xy[ xy[,1]%%xy[,2] == 0, 1])
答案 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