从随机标记数据帧的行创建因子矢量

时间:2017-07-26 08:46:38

标签: r random bioconductor

我有一个110行的数据帧,它是微阵列实验表达式对象的pData。我想创建一个具有2个级别的因子矢量,随机分配给行(代表实验的样本)。例如,如果在实验中有110行对应于110个主题,我希望将55行设置为“G0”,将55行设置为“G1”。这些组用于后续功能。 我目前正在尝试以下内容,它包含在我试图修改的函数中:

# makes a numeric vector of the number of subjects/rows in the pData
sml<-rep(0,length(colnames(eset))

# ‘populate’ sml with G0 & G1 
sml[sample(sml,(length(sml)/2))]<-"G0"
sml[sample(sml,(length(sml)/2))]<-"G1"
label <- as.factor(sml)

如何进行采样以使G1组完成sml的长度并使已经指定为G0的位置保持不变? 感谢

1 个答案:

答案 0 :(得分:2)

这是正确答案

eset <- matrix(NA, ncol = 110, nrow = 1)
good <- sample(
  rep(
    factor(c("G0", "G1")),
    ncol(eset) %/% 2
  )
)
table(good)

这是一个不好的例子

bad <- sample(c("G0", "G1"), ncol(eset), replace = TRUE)
table(bad)