Умножьте строки кадра данных R, сопоставив именованные числовые

Как вы можете выборочно умножить строку в кадре данных на соответствующее число в именованном числовом?

## Create DataFrame
d <- data.frame(a=c(1,1,2), b=c(2,2,1), c=c(3,0,1))
rownames(d) = c("X", "Y", "Z")

## Create Named Numeric
named_numeric = c(2,1,3)
names(named_numeric) = c("X", "Y", "Z")
named_numeric

В этом случае все значения в первой строке кадра данных («X»: 1,2,3) будут умножены на значение «X» в именованном числе (2). Результатом первой строки будет «X»: 2,4,6.

expected_output = data.frame(a=c(2,1,6), b=c(4,2,3), c=c(6,0,3))
rownames(expected_output) = c("X", "Y", "Z")

person Cody Glickman    schedule 04.02.2020    source источник


Ответы (1)


Мы можем просто сделать

out <- d * named_numeric
identical(expected_output, out)
#[1] TRUE

если имена named_numeric не совпадают с именами строк, то изменить порядок одного из них и умножить

d * named_numeric[row.names(d)]
person akrun    schedule 04.02.2020
comment
это работает! Спасибо за быстрый ответ и простую реализацию - person Cody Glickman; 04.02.2020