分两个向量

时间:2016-06-17 21:03:51

标签: r vector division

我有第一个向量,例如:x=1:10,第二个有素数,例如y=c(2,3,5,7)

我希望排序向量x:可被2整除,可被3整除,等等。 所以,输出看起来像这样:2 4 6 8 10 3 9 5 7

2 个答案:

答案 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