使用'创建函数;对于';环进R
我才刚开始学R语言。我花了半天的时间试图写一个函数,我急切地想找到解决方案。如果有人真的很好,可以帮助我,并知道什么是解决办法,非常感谢:) 下面是解释,我必须创建一个函数使用'创建函数;对于';环进R,r,function,loops,for-loop,R,Function,Loops,For Loop,我才刚开始学R语言。我花了半天的时间试图写一个函数,我急切地想找到解决方案。如果有人真的很好,可以帮助我,并知道什么是解决办法,非常感谢:) 下面是解释,我必须创建一个函数f4 获取一个输入(数字)向量v和一个整数a 如果v中有两个数字加起来等于a,则返回TRUE,否则返回FALSE。 请注意,答案应该包括一个for循环 提示:让i=1。如果存在一个互补索引j,使得v[1]+v[j]==a,那么f1(v[2:n],a-v[1])必须返回TRUE。如果不是,则可以排除v[1],并且可以通过检查
f4
- 获取一个输入(数字)向量
和一个整数v
a
- 如果
中有两个数字加起来等于v
,则返回a
,否则返回TRUE
。 请注意,答案应该包括一个FALSE
循环for
i=1
。如果存在一个互补索引j
,使得v[1]+v[j]==a
,那么f1(v[2:n],a-v[1])
必须返回TRUE
。如果不是,则可以排除v[1]
,并且可以通过检查f1(v[3:n],a-v[2])
是否返回TRUE
来查找v[2]
的互补项。这个想法可以通过编写f4
作为f1(v[(i+1):n],a-v[i])
上的循环来迭代。
要检查我的答案:
打印(sapply(c(1,2,3,4,20),函数(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)
}
f4不清楚预期的错误。您需要什么样的预期输出sapply(c(1,2,3,4,20),函数(x)any(outer(1:10,1:10,
+)==x))
如果我不够清楚,很抱歉:)我需要创建一个函数,例如“print(sapply(c(1,2,3,4,20),函数(x)f4(1:10,x))”的输出返回[1]FALSE FALSE TRUE FALSE,而到目前为止,我编写的函数返回以下输出:[1]FALSE[1]FALSE[1]TRUE[1]FALSE[1]FALSE FALSE TRUE FALSE为什么最后一个是FALSE
。对我来说,它返回TRUEsapply(c(1,2,3,4,20),函数(x)any(outer(1:10,1:10,
+)==x))#[1]FALSE-TRUE
不清楚预期的值。您需要什么样的预期输出sapply(c(1,2,3,4,20),函数(x)any(outer(1:10,1:10,
+)==x))
如果我不够清楚,很抱歉:)我需要创建一个函数,例如“print(sapply(c(1,2,3,4,20),函数(x)f4(1:10,x))”的输出返回[1]FALSE FALSE TRUE FALSE,而到目前为止,我编写的函数返回以下输出:[1]FALSE[1]FALSE[1]TRUE[1]FALSE[1]FALSE FALSE TRUE FALSE为什么最后一个是FALSE
。对我来说,它返回TRUEsapply(c(1,2,3,4,20),函数(x)any(outer(1:10,1:10,
+)==x))#[1]FALSE-TRUE