我刚刚开始学习R语言。我花了半天的时间尝试编写一个函数,我很想找到解决方案。如果一个真正优秀的人可以帮助我并且知道解决方案,请非常感谢:)
所以这是解释,我必须创建一个函数f4
v
和整数a
,TRUE
中有两个数字之和等于v
,则返回a
,否则返回FALSE
。
请注意,答案应包含一个for
循环。提示:让i = 1
。如果存在互补索引j
,使得v[1] + v[j] == a
,则f1(v[2:n], a - v[1])
必须返回TRUE
。如果不是,则可以排除v[1]
,然后可以通过检查v[2]
是否返回f1(v[3:n], a - v[2])
来寻找TRUE
的补充。可以通过将f4
编写为f1(v[(i+1):n], a - v[i])
上的循环来迭代该想法。
要查看我的答案:
print(sapply(c(1, 2, 3, 4, 20), function(x) f4(1:10, x)))
的输出是:
[1] FALSE FALSE TRUE TRUE FALSE
这是我目前设法写的东西,但是已经停留了几个小时:
f4 <- function(v, a) {
wow <- sort(unique(v))
m <- outer(wow, wow, "+")
diag(m) <- 0
x <- vector("logical", length(a))
for (i in 1:length(a)) {x[[i]] <- any((m==a[[i]]))}
print(x)
}
我不知道是否有人可以帮助我,但您永远不知道:)
干杯!