簡體   English   中英

R中的sapply或其他apply函數

[英]sapply or other apply function in R

昨天我寫了一些代碼,這使您困惑。 對於那個很抱歉。 所以我以一種更簡單的方式再次寫了它。

我的問題是:有沒有更簡單(或更快速)的方法來實現以下代碼?

k <- c(.04, .08, .12, .16, .2);

library(plyr)
valfcn <- function(k, V_next){
  a <- .3;
  b <- .6;

 return_val <- vector()
  for(i in 1:5){
    tmp <- vector()
    for(j in 1:5){
  tmp[j] <- (log(k[i]^a - k[j]) + b*V_next[j]);
}
return_val <- c(return_val,max(tmp[i]))
}
  return_val

}

V0 <- c(rep(0,5))
V1 <- valfcn(k,V0)
V2 <- valfcn(k,V1)

V1
V2

我想使用替代方法,它可能更短但更快,而不是使用for循環方法。

最好!

我相信sapply()根據您的描述不是必需的。 這樣的事情可能會滿足您的需求:

valfcn <- function(k, V_next){
  a <- .3;
  b <- .6;
  max(log(k^a - k) + b*V_next);
}

在此版本中,對k進行的轉換將生成一個向量,然后max()整個向量進行運算。 不需要使用循環或使用sapply() ,因為max()會處理它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM