我在列表中有data.frames,通常,当我想要居中数据时,我使用循环(如下例所示).我想使用"apply"系列的一些功能,但我无法弄清楚如何编写代码.
我的数据的一个例子:
env <- list (data.frame(a=c(-1.08, -1.07, -1.07),
b=c( 4.61, 4.59, 4.59),
c=c( 3.46, 3.56, 3.52)),
data.frame(a=c( 3.93, 3.94, 3.92),
b=c(-6.69, -6.72, -6.68),
c=c( 3.04, 3.08, 3.03)))
Run Code Online (Sandbox Code Playgroud)
我将使用这些值来使它们居中:
d <- c(a=10.20, b=-10.91, c=11.89)
Run Code Online (Sandbox Code Playgroud)
我经常使用的循环类型:
for(i in 1:length(env)) {
env[[i]][, 1] <- env[[i]][, 1] - d[1]
env[[i]][, 2] <- env[[i]][, 2] - d[2]
env[[i]][, 3] <- env[[i]][, 3] - d[3]
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用"apply"系列的函数来完成我在上面循环中所做的同样的事情?
我找不到原因Test1,并且Data$Test1在我的代码中不相同。见下文;
library("data.table")
Data <- fread("
V1 V2 V3
14 24.70762 17.3329292
8 25.01303 19.7530632
1 18.87427 -0.7832386
14 23.43488 14.9795652
14 24.43762 20.7145533
8 29.85930 3.7763770
17 27.66289 1.8315841
1 21.28808 79.7883210
1 24.55836 70.0779117
1 13.01046 27.3039891")
Function <- function(v1, v2, v3){
ff <- function(wt){
mod2 <- 1.399666
j2 <- -0.4142602
alpha <- 0.895474
X_mu <- ifelse(wt >= j2*100,
wt - j2*100,
0)
mia <- X_mu/(alpha*100)
weibull <- mod2/(alpha*100) * mia^(mod2 - 1) *
exp(-mia^mod2) …Run Code Online (Sandbox Code Playgroud)