尝试编写一个R函数:是For循环还是不';不行?

尝试编写一个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

我有一个这样的函数(见下文),我真的无法理解为什么它不起作用

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, 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)
是的,返回[…]就是问题所在。将其更改为“打印”。谢谢