包含NAs的data.frame中每列的随机样本

包含NAs的data.frame中每列的随机样本,r,random,statistics,sample,R,Random,Statistics,Sample,这是我们的后续行动。我想从data.frame的每一行中独立于其他行随机抽取样本。data.frame可能包含给定data.framedf中给定的NAs set.seed(12345) df1 <- c(rnorm(n=4, mean=0, sd=1), NA) df2 <- rnorm(n=5, mean=10, sd=1) df <- rbind(df1, df2) t(apply(df, 1, sample, replace=TRUE)) [,1]

这是我们的后续行动。我想从
data.frame
的每一行中独立于其他行随机抽取样本。
data.frame
可能包含给定
data.frame
df
中给定的NAs

set.seed(12345)
df1 <- c(rnorm(n=4, mean=0, sd=1), NA)
df2 <- rnorm(n=5, mean=10, sd=1)
df <- rbind(df1, df2)

t(apply(df, 1, sample, replace=TRUE))

         [,1]     [,2]       [,3]     [,4]    [,5]
df1 0.5855288       NA -0.1093033 0.709466      NA
df2 9.7238159 9.723816  8.1820440 9.723816 10.6301
set.seed(12345)

df1我想您只想使用非NA值进行采样。在这种情况下,
!is.na
可用于删除na值,然后我们对剩余值进行采样。输出将是一个
列表('lst'),因为
示例后每行的元素数不同(4和5)

  lst <- apply(df, 1, function(x) sample(x[!is.na(x)], replace=TRUE))

是的,你是绝对正确的@akrun。也许
lst谢谢@akrun的帮助性评论。你介意把你的评论改成回答吗?我用新代码更新了帖子。
  do.call(rbind,lapply(lst, `length<-`, max(lengths(lst))))