【发布时间】:2017-02-22 00:34:42
【问题描述】:
我的程序遇到的问题有一个可重现的小版本。
我的代码结构涉及嵌套函数,类似于下图,只是更复杂。
x <- data.frame(c(1:5),c(0))
colnames(x) <- c("val1", "val2")
foo <- function() {
for(i in 1:length(x[,1])) {
bar(i)
}
print(x)
}
bar <- function(i) {
if(x[i,2] == 0) {
x[i,2] <- 1
print(x[i,])
}
return(x)
}
>foo()
val1 val2
1 1 1
val1 val2
2 2 1
val1 val2
3 3 1
val1 val2
4 4 1
val1 val2
5 5 1
val1 val2
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
因此,正如结果所示,bar() 函数并未返回值以更新数据框。
为了将更新后的表返回给 foo() 函数,我需要进行哪些更改?
提前致谢。
【问题讨论】:
-
你能简单解释一下你想要从你的函数中得到什么输出吗?我想我有一个答案,但我不太确定我知道你想要什么作为解决方案。
-
感谢您的回复,我正在寻找一个更新的数据框 x,其中第 2 列的所有值都为 1。
-
在一个更复杂的示例中,我希望您希望有条件地更改第二列?
标签: r