假设我有一个数据表,
dt1
:
dt1 <- data.table(
names = c("A1", "XX", "A2", "XY", "A3", "XZ"),
A1 = c( 0, 0, 0, 0, 0, 0),
A2 = c( 0, 0, 0, 0, 0, 0),
A3 = c( 0, 0, 0, 0, 0, 0)
)
dt2 <- data.table(
names = c("A1", "XX", "A2", "XY", "A3", "XZ"),
A1 = c( 1, 0, 0, 0, 0, 0),
A2 = c( 0, 0, 1, 0, 0, 0),
A3 = c( 0, 0, 0, 0, 1, 0)
)
i、 e,如果列的行值
names
与某列的名称相同,则该列的行值更改为
1
.
dt1[names == "A1", "A1" := 1]
dt1[names == "A2", "A2" := 1]
dt1[names == "A3", "A3" := 1]
但我想知道是否有一种更简单的方法可以做到这一点,特别是当我想更改的列数很大时。
cln <- c("A1", "A2", "A3")
dt1[names == (cln), (cln) := 1]