R 使用来自另一个函数的数据

R 使用来自另一个函数的数据,r,R,我在R“EffectSize”中创建了一个函数,当我运行它时,它会给我一个数据表 i、 e 跑步 EffectSize(epidural, 0.95, "OR") 我得到: Author OR ln(OR) Var ln(OR) 95% CI 1 A 0.894 -0.112 0.309967 (0.3001, 2.6611) 2 B 0.908 -0.097 0.064500 (0.5519, 1.4934) 3 C 0.824 -

我在R“EffectSize”中创建了一个函数,当我运行它时,它会给我一个数据表

i、 e

跑步

EffectSize(epidural, 0.95, "OR")
我得到:

    Author    OR ln(OR) Var ln(OR)            95% CI
1    A 0.894 -0.112   0.309967  (0.3001, 2.6611)
2   B 0.908 -0.097   0.064500  (0.5519, 1.4934)
3  C 0.824 -0.194   2.130252 (0.0471, 14.3893)
4 D 0.874 -0.135   0.015054  (0.6871, 1.1115)
5     E 0.764 -0.269   0.021964  (0.5712, 1.0212)
6 F 0.328 -1.116   0.415859  (0.0926, 1.1599)
现在我想创建另一个函数,它使用这个表中的值

我希望函数的结构与此相同,以便:

InVar=function(data,conf.level,statistic){
...
}
作为这个问题的一点背景知识,我想知道

weight=1/varodds
muhat=sum(weight*logodds)/sum(weight)
varmuhat=1/sum(weight)
为了实现这一目标,我试着做如下事情

InVar=function(data,conf.level,statistic){
weight=1/EffectSize[,4]
...
}
但是我一点运气都没有

我希望我已经很好地解释了我所追求的事情,并将感谢您提供的任何帮助


非常感谢

我不能确切地告诉您的
EffectSize
函数是如何工作的,但我假设它是作为副作用生成表的,而不是返回对象

将表分配给函数内的对象,然后让函数返回该对象:

EffectSize=function(data,conf.level,statistic){
...
table <- functionThatMakesTable
return(table)
}
一种更简洁的方法是计算
EffectSize
中的权重,或者将表格和权重作为列表返回,或者仅返回权重:

EffectSize=function(data,conf.level,statistic){
...
table <- functionThatMakesTable

print(table) # see the table in the output

weight <- 1/table[,4]

return(list(table, weight)) # or return(weight) if you just want to see the table and not use it later
}
EffectSize=function(数据、配置级别、统计){
...

table我不能确切地告诉您的
EffectSize
函数是如何工作的,但我假设它是作为副作用生成表的,而不是返回对象

将表分配给函数内的对象,然后让函数返回该对象:

EffectSize=function(data,conf.level,statistic){
...
table <- functionThatMakesTable
return(table)
}
一种更简洁的方法是计算
EffectSize
中的权重,或者将表格和权重作为列表返回,或者仅返回权重:

EffectSize=function(data,conf.level,statistic){
...
table <- functionThatMakesTable

print(table) # see the table in the output

weight <- 1/table[,4]

return(list(table, weight)) # or return(weight) if you just want to see the table and not use it later
}
EffectSize=function(数据、配置级别、统计){
...

给出一个简短的答案:您不能对函数进行子集。

假设你有

dummy <- function(){
  # doing some stuff
  results <- data.frame(1:3, letters[1:3])
  return(results)
}
…但那个会有用的

dummy()[1,]

dummy[1,]
尝试将对象dummy子集。因为dummy是一个函数,而不是矩阵或数据帧,所以它不支持此方法

另一方面,
dummy()[1,]
之所以有效,是因为它尝试将
dummy()
生成的结果子集化,而不是函数本身


因此,我想不是这条线

weight=1/EffectSize[,4]
这个应该适合你:

weight=1/EffectSize()[,4]

简单回答:不能对函数进行子集。

假设你有

dummy <- function(){
  # doing some stuff
  results <- data.frame(1:3, letters[1:3])
  return(results)
}
…但那个会有用的

dummy()[1,]

dummy[1,]
尝试将对象dummy子集。因为dummy是一个函数,而不是矩阵或数据帧,所以它不支持此方法

另一方面,
dummy()[1,]
之所以有效,是因为它尝试将
dummy()
生成的结果子集化,而不是函数本身


因此,我想不是这条线

weight=1/EffectSize[,4]
这个应该适合你:

weight=1/EffectSize()[,4]

EffectSize是一个函数,而不是一个数据帧/矩阵。您引用它的方式不起作用。我建议您阅读R数据结构和函数。如果有尽可能多的与问题无关的东西(我的函数不起作用)被剥离,并且实际发布的东西起作用,那么提出问题总是很好的(在这种情况下,中断)正如所贴。所以请尝试显示真实的、最小的代码,而不是臃肿的伪代码。换言之:我读了很多书,但仍然不得不猜测和假设这个问题以及它是如何发生的。EffectSize是一个函数,而不是一个数据帧/矩阵。你引用它的方式不起作用。我建议阅读R数据str结构和功能。在尽可能多的与问题无关的东西(我的功能不起作用)被剥离,而实际发布的东西起作用(在本例中是中断)的情况下,提出问题总是很好的正如帖子所示。所以请尝试展示真实的、最少的代码,而不是臃肿的伪代码。换言之:我必须阅读大量内容,但仍然必须猜测和假设问题以及它是如何发生的。对于一个不太多的问题,回答得很好。+1!谢谢你的帮助。对不起,我很难表达我真正想做的事情,但是是帮助了我谢谢。对一个不太多的问题回答得很好。+1!谢谢你的帮助。对不起,我努力表达我真正想做的事情,但这帮了我谢谢。