簡體   English   中英

在 sapply R 中使用 function

[英]use function in sapply R

我需要在#2 中使用 function 創建直方圖,有人知道嗎? 我收到警告消息: In hist(as.integer(project.timeV)): NAs introduction by coercion

#1.
roundNorm <- function(m, sd) { #m is Mean, sd is Standard Deviation
  x <- rnorm(1,m,sd)
  roundUp.X <- ceiling(x)
  return(roundUp.X)
}

#2.
project <- function(x) { # route 1: A-B-C-F, route 2: A-D-E-F
  a.time <- roundNorm(10,3)
  b.time <- roundNorm(10,3)
  c.time <- 5
  d.time <- 10
  e.time <- roundNorm(5,2)
  f.time <- 4
  if(b.time+c.time > d.time+e.time){
    projectLength <- a.time+b.time+c.time+f.time
    criRoute <- "A,B,C,F"
    answer <- c(projectLength,criRoute)
  }
  else {
    projectLength <- a.time+d.time+e.time+f.time
    criRoute <- "A,D,E,F"
    answer <- c(projectLength,criRoute)
  }
  return(answer)
}

#3.
samp <- 1:10000
project.timeV <- sapply(samp,project)
hist(as.integer(project.timeV))

如果我這樣做,我不會收到任何錯誤。

project.timeV <- sapply(samp, project, simplify = FALSE)
project.timeV <- do.call(rbind, project.timeV)
hist(as.integer(project.timeV[, 1]))

這是結果的預覽。 請注意,我不想sapply簡化我的結果。 這是我用do.call做的事情,因為我想按行而不是按列展平。

> head(project.timeV)
     [,1] [,2]     
[1,] "34" "A,D,E,F"
[2,] "34" "A,B,C,F"
[3,] "26" "A,D,E,F"
[4,] "24" "A,B,C,F"
[5,] "29" "A,D,E,F"
[6,] "30" "A,D,E,F"

暫無
暫無

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

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