【发布时间】:2017-01-27 08:47:53
【问题描述】:
我目前正在阅读“R for Data Science”一书。
我正在尝试解决这个练习题(21.2.1 Q1.4),但在开始 for 循环之前无法确定正确的输出。
编写一个 for 循环: 为 μ= -10、0、10 和 100 中的每一个生成 10 个随机法线。
就像书中前面的问题一样,我一直在尝试将其插入向量输出,但对于这个示例,我似乎需要将输出作为数据框?
这是我目前的代码:
values <- c(-10,0,10,100)
output <- vector("double", 10)
for (i in seq_along(values)) {
output[[i]] <- rnorm(10, mean = values[[i]])
}
我知道输出错误,但不确定如何在此处创建我需要的格式。非常感谢任何帮助。谢谢!
【问题讨论】:
-
您可以使用
lapply或sapply即d1 <- data.frame(lapply(values, function(x) rnorm(10, mean=x))); colnames(d1) <- paste0("V", seq_along(values)) -
您好,感谢您的解决方案。这确实有效,但最好也获得一个 for 循环解决方案,因为这是我目前打算提高的技能。谢谢!
-
您首先创建一个空矩阵或列表,然后将值分配给它。即
output <- vector("list", 4);并在必要时使用您的代码和cbind或rbind,即do.call(cbind, output)