【发布时间】:2016-07-16 03:22:55
【问题描述】:
这个问题与stackoverflow下一页中提出的问题有关:Ignoring values or NAs in the sample function
问题:我有一个矩阵 K(比如 1528)行和许多(比如 1000)列。许多条目中都有 NA。从每一列中,我想按以下方式采样 40 个元素:如果列中此类元素的总数不少于 40,我从非 NA 元素中随机抽样。如果它们小于 40(比如=k),则将是所有 k 个元素和 40-k 个 NA。我试过以下代码:
mysample <- function(x){
if(sum(is.na(x))>1488){
sum(x[!is.na(x)])
return(c(x[!is.na(x)],rep(NA,40-sum(x[!is.na(x)]))))
}
return(sample(x[!is.na(x)],40))
}
J=apply(K, 2, mysample)
在第四行,它在重复中显示无效的“次”参数。任何人都可以使代码可行(我想包括 NA,因为我想从中生成一个 40X1000 矩阵)
【问题讨论】:
-
对不起:我自己找到了答案:mysample 1488){ return(c(x[!is.na(x) )],rep(NA,40))[1:40]) } return(sample(x[!is.na(x)],40)) } J=apply(K, 2, mysample) 感谢所有以前论坛里的讨论。我的代码是它们的直接扩展
标签: r