从数据框行的随机标签创建因子向量

Create Vector of Factors from random labelling of rows of a data frame

我有一个包含 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 的位置不变? 谢谢

这是正确答案

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)