小编Nic*_*cso的帖子

将循环替换为"apply"系列的一个功能

我在列表中有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"系列的函数来完成我在上面循环中所做的同样的事情?

loops r apply

9
推荐指数
1
解决办法
497
查看次数

对行及其 data.table 中的等效函数应用用户定义的函数

我找不到原因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)

r data.table

1
推荐指数
1
解决办法
50
查看次数

标签 统计

r ×2

apply ×1

data.table ×1

loops ×1