尝试编写一个R函数:是For循环还是不';不行?
我有一个这样的函数(见下文),我真的无法理解为什么它不起作用 for循环本身在单独运行时(不是在函数内部运行)确实可以很好地工作,但无论输入值如何,函数始终返回空向量。我在c(3,0,4,0,99)上做测试,代码应该返回c(5,0,4,0,99)。(一个和两个工作良好,并在早期任务中进行了测试)尝试编写一个R函数:是For循环还是不';不行?,r,function,for-loop,vector,R,Function,For Loop,Vector,我有一个这样的函数(见下文),我真的无法理解为什么它不起作用 for循环本身在单独运行时(不是在函数内部运行)确实可以很好地工作,但无论输入值如何,函数始终返回空向量。我在c(3,0,4,0,99)上做测试,代码应该返回c(5,0,4,0,99)。(一个和两个工作良好,并在早期任务中进行了测试) run\u code运行以下代码: run_code <- function(code, input) { opcode <- which(code %in% c(1, 2, 3, 4, 9
run\u code运行以下代码:
run_code <- function(code, input) {
opcode <- which(code %in% c(1, 2, 3, 4, 99))
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) {
code[i] = code[i+1]
return(code)
} else {
if (code[i] == 99) {
break
}
}
}
}
}
}
return(code)
}
a = run_code(code = c(3, 0, 4, 0, 99), input = 1)
run\u code运行以下代码:
run_code <- function(code, input) {
opcode <- which(code %in% c(1, 2, 3, 4, 99))
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) {
code[i] = code[i+1]
return(code)
} else {
if (code[i] == 99) {
break
}
}
}
}
}
}
return(code)
}
a = run_code(code = c(3, 0, 4, 0, 99), input = 1)
run\u code你能解释一下函数run\u code
应该做什么吗?什么是code
和input
参数,它们应该返回什么输出?在这种情况下,code
应该是一个数字向量,其中1、2、3、4和99表示覆盖(更改)数字向量本身的指令。run\u code
函数应实现这些更改并返回更改后的数值向量(code
)input
是任务指令给出的一些输入值,它告诉函数在(循环)开始时要做什么。实际上,除了函数内部之外,一切似乎都是独立工作的。你能解释一下函数run\u code
应该做什么吗?什么是code
和input
参数,它们应该返回什么输出?在这种情况下,code
应该是一个数字向量,其中1、2、3、4和99表示覆盖(更改)数字向量本身的指令。run\u code
函数应实现这些更改并返回更改后的数值向量(code
)input
是任务指令给出的一些输入值,它告诉函数在(循环)开始时要做什么。实际上,除了函数内部之外,一切似乎都是独立工作的。谢谢你的帮助,但这仍然是我得到的:>运行代码(code=c(3,0,4,0,99),输入=1)数值(0)
是的,返回[…]就是问题所在。将其更改为“打印”。谢谢谢谢你的帮助,但这仍然是我得到的:>run\u code(code=c(3,0,4,0,99),input=1)numeric(0)
是的,返回[…]就是问题所在。将其更改为“打印”。谢谢