Aud*_*leF 1 r vector dataframe
我有一个看起来像二进制数据集
a b c d
r1 1 1 0 0
r2 0 1 1 0
r3 1 0 0 1
Run Code Online (Sandbox Code Playgroud)
和一个矢量
V <- c("a", "c")
Run Code Online (Sandbox Code Playgroud)
我想要一个命令来搜索colnames并更改这些列中的值.例如,将1更改为A.因此输出将为:
a b c d
r1 A 1 0 0
r2 0 1 A 0
r3 A 0 0 1
Run Code Online (Sandbox Code Playgroud)
这是一种矢量化的方法,
df[names(df) %in% V] <- replace(df[names(df) %in% V], df[names(df) %in% V] == 1, 'A')
#or avoid calling the %in% part 3 times by assigning it, i.e.
i1 <- names(df) %in% V
df[i1] <- replace(df[i1], df[i1] == 1, 'A')
#or a more simplified syntax, compliments of @Cath,
df[, V][df[, V]==1] <- "A"
Run Code Online (Sandbox Code Playgroud)
这使,
Run Code Online (Sandbox Code Playgroud)a b c d r1 A 1 0 0 r2 0 1 A 0 r3 A 0 0 1