0

我想引导一个包含多个列和行变量的大型数据集。以下是我的数据集的简化重新创建:

charDataDiff <- data.frame(c('A','B','C'), matrix(1:72, nrow=9))
colnames(charDataDiff) <- c("patchId","s380","s390","s400","s410","s420","s430","s440","s450")

以 为标准分隔数据patchId。这将创建三个列表:每个变量一个

idColor <-  c("A", "B", "C")
(patchSpectrum <- lapply(idColor, function(idColor) charDataDiff[charDataDiff$patchId==idColor,]))

创建了sampleBoot对样本进行采样的函数patchSpectrum

sampleBoot <-  function(nbootstrap=2, patch=3){
    return(lapply(1:nbootstrap, function(i)
             {patchSpectrum[[patch]][sample(1:nrow(patchSpectrum[[patch]]),replace=TRUE),]}))}

例子:

sampleBoot(5,3)

这是我卡住的地方:

  1. 我需要对每个patchId列表以及每个列变量进行采样(上面的“sampleBoot”很容易完成),
  2. patchId取每个采样列表迭代的中位数,并且
  3. 创建一个新的中位数总体来计算参数参数。我可以手动完成,但这很愚蠢。
4

1 回答 1

1

据我从您的问题中了解到,您可以执行以下操作:

do.call(rbind, lapply(sampleBoot(5, 3), function(x) apply(x[-1], 2, median)))

它创建了一个包含补丁 3 的 5 个样本的中位数的表格。

于 2012-10-28T01:24:30.290 回答