我有一列填满了其他列的名称。我想获取每个列名中的值。
# three columns with values and one "key" column
library(dplyr)
data = data.frame(
x = runif(10),
y = runif(10),
z = runif(10),
key = sample(c('x', 'y', 'z'), 10, replace=TRUE)
)
# now get the value named in 'key'
data = data %>% mutate(value = VALUE_AT_COLUMN(key))
我相信答案与惰性求值版本的mutate有关,但是我却无法理解。
任何帮助都将不胜感激。
data[c("x", "y", "z")][cbind(seq_len(nrow(data)), match(data$key, names(data)))]
来避免对每一行进行分组(代价可能更低,但需要进行中间转换为“矩阵”)。 - alexis_lazdata[1:3]
、data[unique(data$key)]
、data[!names(data) %in% "key"]
等。 - alexis_laz