在 R 中添加具有定义值的新列

Add new columns with defined values in R

我有一个名为 dmat 的 data.table。我想将 missing_snps 的每个字符作为新列添加到 dmat 并将所有行分配为零。输出保持原样 class。 如果有任何建议,我将不胜感激。

dmat <- structure(list(`1:27950613:G:A` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `1:27950883:CTA:C` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `1:27952180:A:G` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `1:27953106:A:G` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `1:27953374:G:T` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `1:27953514:T:TA` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `1:27953608:T:C` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `1:27954027:G:A` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `1:27954415:T:C` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `1:27962685:T:C` = c(0L, 0L, 0L, 0L, 0L, 1L, 0L, 
0L, 0L, 0L)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", 
"data.frame"))

missing_snps <- c("1:169858888:G:A", "1:16985867657:T:A", "1:132862874:G:A")

dmat[,c("1:169858888:G:A", "1:16985867657:T:A", "1:132862874:G:A")] <- 0

dmat[, missing_snps] <- 0

使用data.table,

dmat <- setDT(dmat)
missing_snps <- c("1:169858888:G:A", "1:16985867657:T:A", "1:132862874:G:A")
dmat[,(missing_snps ):=0]

输出

> dmat[,..missing_snps ]
    1:169858888:G:A 1:16985867657:T:A 1:132862874:G:A
 1:               0                 0               0
 2:               0                 0               0
 3:               0                 0               0
 4:               0                 0               0
 5:               0                 0               0
 6:               0                 0               0
 7:               0                 0               0
 8:               0                 0               0
 9:               0                 0               0
10:               0                 0               0

您要更改的列已添加。