在R中使用“ for”循环创建函数

时间:2020-10-18 21:57:01

标签: r function loops for-loop

我刚刚开始学习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)
}

我不知道是否有人可以帮助我,但您永远不知道:)

干杯!

0 个答案:

没有答案