【发布时间】:2016-11-18 21:13:49
【问题描述】:
我有一个相对高维 (100X500000) 的矩阵 Q,我想对其进行下采样。通过下采样,我会举例说明。
让 Q =
1 4 9
3 2 1
并且下采样大小= n。我想从一个 sum(Q) = 20 个球的罐子中画出 n 个球,每个球的颜色为 6 种方式中的 1 种,对应于矩阵的不同索引对。就像我有 1 个 A 色球,4 个 B 色球,等等,我正在画 n 个球而没有替换。
我希望它以与矩阵相同的格式返回。一个示例返回值,例如 downsample(Q, 3) =
0 0 2
1 0 0
我的方法是尝试使用示例:
sample(length(as.vector(Q)), size=n, replace=FALSE, prob = as.vector(Q))
但是问题是,示例将 1:length(as.vector(Q)) 视为我拥有的所有球,所以我不能绘制超过 length(as.vector(Q)) 球,因为我我不会替换我的球。
因此,为了调整我的方法,我需要通过从该向量中减去 1 来更新我的概率,并使用某种 for 循环逐个调用样本。这听起来不像是好代码。
有没有更好的方法以 R 友好、无 for 循环的方式执行此操作?
【问题讨论】:
标签: r matrix sampling downsampling