如何将列表中的每个元素与R中另一个列表中的每个元素分开?
问题描述:
我想检查是否all
elements
list
的A整除与list
B的所有元素,如果余数为0
所有elements
,我想print
A.如何将列表中的每个元素与R中另一个列表中的每个元素分开?
我的例子中的相应elements
到目前为止的代码
first<-c(2,4,6,8,10,12)
second<-c(2,3)
for (i in first){
for (j in second){
if (i%%j==0){ #if any elements in first is divisible by all elements in second
print(i)
}
}
}
但它给我的输出这样
[1] 2
[1] 4
[1] 6
[1] 6
[1] 8
[1] 10
[1] 12
[1] 12
我期待的东西[1] 6,12
答
我们可以使用outer
获得每个组合的弹性模量,然后rowSums
看哪个不留余,
first[rowSums(outer(first, second, `%%`)) == 0]
#[1] 6 12
答
你的代码打印出来的所有号码first
可由任意整除second
。看一看在all function,你正在寻找的东西像
first<-c(2,4,6,8,10,12)
second<-c(2,3)
for (i in first){
if (all(i %% second == 0)){ #if any elements in first is divisible by all elements in second
print(i)
}
}
+0
我不认为这会返回正确的输出。你有没有检查它的作用? –
+0
是的,它返回正确的输出(如果我正确理解问题)。我用更完整的代码示例更新了我的答案。 – oha
答
奥利弗有权,完成代码,你应该这样做:
for (i in first){
if(all(i%%second==0)){
print(i)
}
}
不错!我正在考虑'第一个[第一个%% prod(second)== 0]',但是当'second'有点像'c(2,3,6)'时,这个问题就搞砸了。只是为了好玩,任何可以解决的方法? – Aramis7d