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



我有(几行(下面的数据帧:

dput(DATA)
structure(list(S = c(12, 12, 12, 15, 15, 9), UG = c(100, 124, 
84, 108, 124, 108), N_b = c(5, 5, 5, 5, 5, 5), A = c(-12, -12, 
-12, -15, -15, -9), x.sqr = c(1440, 1440, 1440, 2250, 2250, 810
), e_1 = c(21.8, 21.8, 21.8, 29, 29, 14.6), e_2 = c(9.8, 9.8, 
9.8, 17, 17, 2.6), e_3 = c(-2.2, -2.2, -2.2, 5, 5, -9.4), e_4 = c(-14.2, 
-14.2, -14.2, -7, -7, 0), e_5 = c(0, 0, 0, -19, -19, 0), Lanes = c(3, 
3, 3, 3, 3, 3), m = c(0.85, 0.85, 0.85, 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))

最新更新