首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从函数中向data.frame添加列

从函数中向data.frame添加列
EN

Stack Overflow用户
提问于 2014-12-12 16:43:58
回答 1查看 72关注 0票数 0

我正在建立一种药效的功能,这取决于用药年龄和用药后的几年。这样做的目的是找出一种药物在你得到它的时候的疗效,然后随着时间的推移而降低疗效;例如,在50岁的时候服用药物,然后每年跟踪观察药效如何变化。函数的修改版本如下所示。

最后我想要的是药物疗效的data.frame,每一栏都是给药的年龄(例如,50,51,52,.,85),每一行都是剂量后每年的药效(例如,1,2,.,10)。

我尝试过各种各样的东西,但基本上没有结果。下面的代码是我所得到的最接近的代码,但仍然离我很远。如果需要,可以将函数重构为两部分,如果更容易的话。

此外,如果有一种简单的方式来命名列,这将是伟大的,但这是我现在最不关心的。

任何帮助都将不胜感激。谢谢

代码语言:javascript
复制
b2 <- 0.28
a1 <- 0.02
a2 <- 0.04
e  <- exp(1)

p_tot   <- 19132 + 18827 + 14505 
p1   <- 19132 
p2   <- 18827 
p3   <- 14505 

years_i <- seq(1, 10, by = 1)
age_j   <- seq(50, 85, by = 1)

VEij <- function(age_j, years_i){
  b1j <-   ((a1 - a2*age_j)*p_tot + b2*(p1 + 2*p2 + 3*p3)) / p_tot
  Efficacy <- b1j - b2*years_i
  return(Efficacy)
}

EffDF <- data.frame(years_i)

for (x in age_j){
  for (y in years_i){
    EffDF <- cbind(EffDF, VEij(x, y))
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-12 16:56:03

我猜这就是你想要的。

代码语言:javascript
复制
EffDF <- data.frame(sapply(as.list(age_j), VEij, years_i)
names(EffDF) <- age_j

截断输出:

代码语言:javascript
复制
> EffDF
          50        51        52        53        54        55        56        57
1  -1.724694 -1.764694 -1.804694 -1.844694 -1.884694 -1.924694 -1.964694 -2.004694
2  -2.004694 -2.044694 -2.084694 -2.124694 -2.164694 -2.204694 -2.244694 -2.284694
3  -2.284694 -2.324694 -2.364694 -2.404694 -2.444694 -2.484694 -2.524694 -2.564694
4  -2.564694 -2.604694 -2.644694 -2.684694 -2.724694 -2.764694 -2.804694 -2.844694
5  -2.844694 -2.884694 -2.924694 -2.964694 -3.004694 -3.044694 -3.084694 -3.124694
6  -3.124694 -3.164694 -3.204694 -3.244694 -3.284694 -3.324694 -3.364694 -3.404694
7  -3.404694 -3.444694 -3.484694 -3.524694 -3.564694 -3.604694 -3.644694 -3.684694
8  -3.684694 -3.724694 -3.764694 -3.804694 -3.844694 -3.884694 -3.924694 -3.964694
9  -3.964694 -4.004694 -4.044694 -4.084694 -4.124694 -4.164694 -4.204694 -4.244694
10 -4.244694 -4.284694 -4.324694 -4.364694 -4.404694 -4.444694 -4.484694 -4.524694
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27448185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档