用户定义的函数将多个数据帧导出到全局环境中

时间:2016-03-29 14:56:10

标签: r function dataframe user-defined-functions

我创建了一个函数,它可以计算各种患者数据的统计数据,并输出图表,生成包含每位患者汇总统计数据的数据框。

如果我在R中复制并运行该功能,则输出可供我使用。但是,我现在从一个单独的R脚本调用该函数,并且数据帧不再可用。

有没有办法纠正这个?

例如,

test=function(a){
  A=a
  B=2*a
  C=3*a
  D=4*a
  DF=data.frame(A,B,C,D)
}

a=c(1,2,3,4)
test(a)

这不会返回DF,但如果我要输入:

  a=c(1,2,3,4)
  A=a
  B=2*a
  C=3*a
  D=4*a
  DF=data.frame(A,B,C,D)

然后显然返回DF。有没有一种简单的方法可以解决这个问题,以便DF函数可以使用test

2 个答案:

答案 0 :(得分:0)

尝试:

test=function(a){
  A=a
  B=2*a
  C=3*a
  D=4*a
  DF=data.frame(A,B,C,D)
}

a=c(1,2,3,4)
df<-test(a)
print(df)

通过将函数的返回值分配给新变量,现在可以在全局空间中访问它。

答案 1 :(得分:0)

如果要将函数内的对象分配给全局环境以便于检索,那么您的运算符为“&lt;&lt; - ”或“ - &gt;&gt;”欲了解更多信息,请参阅:

?assignOps()

test <- function(a)
       A=a
       B=2*a
       C=3*a
       D=4*a
       DF <<- data.frame(A,B,C,D)
}

# trial your dummy data
a=c(1,2,3,4)
test(a)
DF

嘿presto ...它的作品!在函数中编写return(DF)不会将数据框传递到全局环境。