【发布时间】:2019-12-23 07:28:32
【问题描述】:
我有这样的功能(见下文),我真的不明白为什么它不起作用。
for 循环本身,当单独运行时(不在函数内部)运行良好,但无论输入值如何,函数总是返回一个空向量。我正在对 c(3, 0, 4, 0, 99) 作为代码进行测试,它应该返回 c(5, 0, 4, 0, 99)。 (one 和 twos 工作正常,并且已经在之前的任务中测试过)。
run_code <- function(code, input) {
opcode <- which(code %in% c(1, 2, 3, 4, 99))
input <- input
for (i in opcode) {
if (code[i] == 1) {
code[code[i+3]+1] <- code[code[i+1]+1] + code[code[i+2]+1]
} else {
if (code[i] == 2) {
code[code[i+3]+1] <- code[code[i+1]+1] * code[code[i+2]+1]
} else {
if (code[i] == 3) {
code[code[i+1]+1] <- input
} else {
if (code[i] == 4) {
return(code[code[i+1]])
} else {
if (code[i] == 99) {
break
}
}
}
}
}
}
return(code)
}
【问题讨论】:
-
你能解释一下
run_code这个函数应该做什么吗?什么是code和input参数,它们应该返回什么输出? -
在这种情况下,
code应该是一个数字向量,其中 1、2、3、4 和 99 代表覆盖(更改)数字向量本身的指令。run_code函数应该实现这些更改并返回更改后的数字向量 (code)。input是任务指令给出的一些输入值,它告诉函数在(循环的)开始时要做什么。除了函数内部之外,一切似乎都可以自行运行。
标签: r function for-loop vector