1 min read

同时改变data.table中多列的属性

在进行模型分析时,如lme4、ASReml和sommer等包,均要求固定效应和随机效应要设置为因子类型。然而通常在读取数据时,为了便于处理数据,一般会把性别,测试池,家系号等作为字符类型读入。

如果把多列字符类型字段一个个转为因子类型,语法看起来不优美。

pheno_dt$AnimalID <- as.factor(pheno_dt$AnimalID)
pheno_dt$SexID <- as.factor(pheno_dt$SexID)
pheno_dt$FamilyID <- as.factor(pheno_dt$FamilyID)
pheno_dt$FamilyClass <- as.factor(pheno_dt$FamilyClass)

下边这种写法比较好:

cols_factor_v <-
  c("AnimalID",
    "SexID",
    "FamilyID",
    "FamilyClass")
pheno_dt[, c(cols_factor_v) := lapply(.SD, as.factor),
                  .SDcols = cols_factor_v]

如果是要改变很多列,譬如上千列(例如对SNP进行操作),参考stackoverflow的讨论.