【问题标题】:Return dataframe or vector from a function从函数返回数据帧或向量
【发布时间】:2023-03-09 19:53:01
【问题描述】:

我根据 -LL 输入计算了模型拟合 (AIC)。我使用了一个矢量化函数,我想返回所有计算值的data.framevector 以供进一步分析。该函数工作正常,但如果我定义一个输出向量,它不会返回这个向量。

这是我的功能:

function.aic <- function(k,LL)   {    
    aic <- (2*(LL)) + (2*k)    
    m <-mean(aic)  
    print(m)    
    print(aic)
    aic_vector <- as.data.frame(aic) }

此外,最好将此向量保存在具有输入变量“LL”名称的对象中,以便为每次计算提供特定对象。但我就是不知道该怎么做,Google 并没有真正提供帮助。

【问题讨论】:

  • 您似乎只是缺少退货声明? return(aic_vector)

标签: r function vector return-type


【解决方案1】:

似乎您只是缺少一个退货声明。此外,要给出命名输出,您可以使用deparsesubstitute 来获取变量名。然后,您可以创建一个列表,并为列表元素指定变量的名称。例如:

function.aic <- function(k,LL)
{
  aic <- (2*(LL)) + (2*k)
  m <-mean(aic)
  print(m)
  print(aic) 
  aic_vector <- as.data.frame(aic) 

  mylist=list()
  mylist[[deparse(substitute(LL))]] = aic_vector
  return(mylist)
}

input_1 = 10
input_2 = 10

x = function.aic(input_1,input_2)

x 现在是:

$input_2
  aic
1  40

因此,x$input_2 包含您的 AIC 数据帧。希望这会有所帮助!

【讨论】:

  • 嘿,谢谢您的回答!我现在将在函数输入中定义一个“名称”变量。但一般问题(甚至添加缺少的 return 语句)是,我在我的环境中没有得到对象。它打印输出,但不保存它。
  • 嗨 Jan,您是否将输出分配给变量?即您将函数称为x &lt;- function.aic()x = function.aic() instad 还是简单的function.aic()
  • 我现在像drift_varying_aic
  • 在函数本身内声明的任何内容在函数外均不可用,这称为作用域。有关范围界定的更多信息,请参阅例如 here
猜你喜欢
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 2022-07-18
  • 2021-09-01
  • 1970-01-01
  • 2018-12-13
  • 2019-03-05
  • 2015-12-09
相关资源
最近更新 更多