R 创建基于2列条件随机采样的数据帧

R 创建基于2列条件随机采样的数据帧,r,dataframe,random,conditional-statements,R,Dataframe,Random,Conditional Statements,我有一个数据帧a,有10000000行和5列,如下所示: SNP REC AF X Y Z rs1 2.3 0.22 sss ff 472 rs200 4.7 0.7 d tg 634 rs33 30.1 0.5 ddf ap 929 使用R,我想用A中的所有列生成50个新的数据帧,以下面的方式循环通过前50行 对于列REC、AF中的每个i、j,从A(替换采样)中选择1000个随机行,其中满足以下2个条件: 1) i-2.5 < i < i+2.5 # i = value in R

我有一个数据帧a,有10000000行和5列,如下所示:

SNP REC AF X Y Z
rs1 2.3 0.22 sss ff 472
rs200 4.7 0.7 d tg 634
rs33 30.1 0.5 ddf ap 929
使用R,我想用A中的所有列生成50个新的数据帧,以下面的方式循环通过前50行

对于列REC、AF中的每个i、j,从A(替换采样)中选择1000个随机行,其中满足以下2个条件:

1) i-2.5 < i < i+2.5 # i = value in REC
2) j-0.05 < j < j+0.05 # j = value in AF
但我不知道如何使功能自动化


欢迎提出任何建议

我们可以在这里使用
Map
。子集
REC
AF
仅针对前50个值,找出范围内的索引和
sample
1000行符合标准的索引

Map(function(i, j) df[sample(which(df$REC > (i - 2.5)  &  df$REC < (i + 2.5) &
           df$AF > (j - 0.05)  &  df$AF < (j + 0.05)), 1000, replace = TRUE), ],
      df$REC[1:50], df$AF[1:50])
Map(函数(i,j)df[示例(其中(df$REC>(i-2.5))和df$REC<(i+2.5)&
df$AF>(j-0.05)和df$AF<(j+0.05)),1000,替换=真),],
df$REC[1:50],df$AF[1:50])

不清楚
i
用于
REC
中的每个值?您能显示预期daatframe的前几行吗?嗨@Ronaksah。是的,i代表REC中的每个值(循环A的前50行,但从整个A中抽取满足2个条件的行)。请参见编辑。非常感谢。非常感谢@Ronak Shah!。请问您是如何从该函数中提取50个数据帧的?@Lucas将该函数的输出存储在一个对象中。说
lst
。lst也是如此
Map(function(i, j) df[sample(which(df$REC > (i - 2.5)  &  df$REC < (i + 2.5) &
           df$AF > (j - 0.05)  &  df$AF < (j + 0.05)), 1000, replace = TRUE), ],
      df$REC[1:50], df$AF[1:50])