微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将函数的输出向量应用于原始数据帧

如何解决将函数的输出向量应用于原始数据帧

我有以下数据框(几行):

dput(DATA)
structure(list(S = c(12,12,15,9),UG = c(100,124,84,108,108),N_b = c(5,5,5),A = c(-12,-12,-15,-9),x.sqr = c(1440,1440,2250,810
),e_1 = c(21.8,21.8,29,14.6),e_2 = c(9.8,9.8,17,2.6),e_3 = c(-2.2,-2.2,-9.4),e_4 = c(-14.2,-14.2,-7,0),e_5 = c(0,-19,Lanes = c(3,3,3),m = c(0.85,0.85,0.85),stiff.girder = c(1468.26598316295,1839.67918718373,1243.17197319875,1828.80171434252,2067.33917075424,1417.62382417312) 
stiff.deck = c(911061.349082292,2001537.86958229,477657.265415625,630455.156416,1035790.97653333,2846237.15553796)),row.names = c(1L,40L,50L,80L,100L,150L),class = "data.frame")

我想写一个计算的函数

R2 <- function(x) { 
  N_b <- x["N_b"]
  N_l <- x["Lanes"]
  A <- x["A"]
  x.sqr <- x["x.sqr"]
  m <- x["m"]
  stiff.girder <-x["stiff.girder"]
  stiff.beam <- x["stiff.deck"]
  e <- x[grepl("e_\\d",names(x))]  
  f <- m * ((N_l/N_b) + (max(A * combn(e,N_l,sum)) / x.sqr) * 
                        ((252*stiff.girder/stiff.beam)^1.304))
  c(val = max(f))
}

但是当我尝试将其应用于数据框时,它会创建多个列,而不是我想要的列。

DATA <- cbind(DATA,vars = t(apply(DATA,1,R2)))

解决方法

@DanY在评论中指出:

DATA <- cbind(DATA,vars = apply(DATA,1,R2))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。