【发布时间】:2021-12-09 21:16:36
【问题描述】:
我正在使用一系列循环为项目生成一堆数据,并希望保存这些值,这样我就不必每次都继续生成它们。我的问题是数据的大小和位置变化很大(见下文),这使得正确存储变得困难。我希望将其转储到一个数据框中,其中各种矩阵占据一个单元格。
生成数据的代码
for (simulation in 1:1000){
g <- ceiling(runif(1, min=0, max=3))
if (g==1) {sample1 = runif(1, min=100, max=3000)}
if (g==2) {sample1 = runif(1, min=100, max=1500)
sample2 = runif(1, min=100, max=1500)}
if (g==2) {sample1 = runif(1, min=100, max=1000)
sample2 = runif(1, min=100, max=1000)
sample3 = runif(1, min=100, max=1000)}
samplesize=sample1+sample2+sample3
for (class in 1:g){
x1 = c()
...
x30 = c()
for (i in 1:samplesize){
x1[i]=rnorm(1,1.5,1)
...
x30[i]=rnorm(1,1.5,1)
}
data = matrix(c(x1:x30))
conditions[simulation,1] = g
conditions[simulation,2] = sample1
conditions[simulation,3] = sample2
conditions[simulation,4] = sample3
}
}
这会生成 30 个变量 (x1-x30),其采样次数取决于组数 (1-3)。因此,如果有一组,则可能有 (30 * 100) 到 (30 * 3000) 之间的任何变量。对于三个组,可能有 (30 * 3 * 100) 到 (30 * 3 * 1000),并且每个组的它们可以不同。因此,数据在某种程度上是有规律的,但是会发生变化。
我想要做的是获取模拟值矩阵 (x1:x30) 并将其与每个模拟的模拟条件一起存储在数据框中。这就像数据框中的第一个单元格是 x 值的嵌套矩阵,而该行中的其他单元格将是奇异值(条件)。我看过一些关于使用双括号 [[]] 执行此操作的帖子,但无法弄清楚如何在我的数据中实现此功能。感谢您提供的任何帮助!
【问题讨论】:
-
您可以使用
list而不是data.frame。