在fun_outer
中,我创建了一个空 Dataframe df
,我想通过内部函数fun_inner
向df
添加一个新行:
fun_outer <- function() {
df <- data.frame()
fun_inner()
return(df)
}
fun_inner <- function(){
tmp <- data.frame(x = 1 ,y = 2)
df <<- rbind(df, tmp)
}
我希望执行fun_outer()
可以返回如下df
:
x y
1 2
但我实际上得到了一个错误:
Error in rep_len(xi, nvar) (temp.R#355): attempt to replicate non-vector
然后我尝试了另一种方法:
fun_outer <- function() {
df <- data.frame()
fun_inner(df)
return(df)
}
fun_inner <- function(x){
tmp <- data.frame(x = 1 ,y = 2)
df <<- rbind(x, tmp)
}
这一次,执行fun_outer()
时,我得到了另一个错误:
Error in fun_inner(df) (temp.R#344): cannot change value of locked binding for 'df'
如何在外部函数中创建数据框,并使用内部函数将行绑定到它?
我的意图是在函数A
中使用一个迭代器函数,将每次迭代的新数据附加到在函数A
中创建的 Dataframe 中
1条答案
按热度按时间cvxl0en21#
如果在当前函数中找不到变量,则在定义函数的环境中查找,而不是在调用函数的环境中查找。
<<-
的工作原理相同。您需要的是作为调用方的父框架。