首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sapply R中使用函数

在sapply R中使用函数
EN

Stack Overflow用户
提问于 2020-04-21 22:01:13
回答 1查看 39关注 0票数 0

我需要用#2中的函数创建一个直方图,有人有想法吗?我收到警告消息:在hist(as.integer(project.timeV))中: NAs由强制引入

代码语言:javascript
复制
#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))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-21 22:15:16

如果我这样做,我不会得到任何错误。

代码语言:javascript
复制
project.timeV <- sapply(samp, project, simplify = FALSE)
project.timeV <- do.call(rbind, project.timeV)
hist(as.integer(project.timeV[, 1]))

下面是结果的预览。请注意,我不希望sapply简化我的结果。这是我使用do.call做的事情,因为我想按行而不是按列展开。

代码语言:javascript
复制
> 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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61345417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档