如何解决将函数的输出向量应用于原始数据帧
我有以下数据框(几行):
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 举报,一经查实,本站将立刻删除。