vector_1 = c(4,3,5,1,2)
vector_2 = c(3,1)
output:
[1] FALSE TRUE FALSE TRUE FALSE
如何在不使用%中的运算符%或R中的任何函数的情况下,仅使用基本运算符/循环来获得输出?
参见match.fun(`%in%`)
match(vector_1,vector_2, nomatch = 0) > 0
没有"函数";有点模糊,因为实际上R中的任何东西都是函数。可能这是一个赋值,并且需要一个for
循环。
res <- logical(length(vector_1))
for (i in seq_along(vector_1)) {
for (j in seq_along(vector_2)) {
if (vector_1[i] == vector_2[j])
res[i] <- TRUE
}
}
res
# [1] FALSE TRUE FALSE TRUE FALSE
然而,在你想做之类的事情的地方,这并不是很R-ish
apply(outer(vector_1, vector_2, `==`), 1, (x) x[which.max(x)])
# [1] FALSE TRUE FALSE TRUE FALSE
数据:
vector_1 <- c(4, 3, 5, 1, 2)
vector_2 <- c(3, 1)
单向sapply()
-
sapply(vector_1, function(x) any(x == vector_2))
[1] FALSE TRUE FALSE TRUE FALSE