R с использованием таблицы поиска

Я пытаюсь придумать элегантный способ сделать следующее:

У меня есть два фрейма данных:

multipFactors:

structure(list(Library = c("FT259", "EL259", "FT261", "EL261", 
"FT325", "EL325"), Vol = c(2.5, 1, 2.5, 1, 2.5, 1), Dfactor = c(5000L, 
1000L, 5000L, 1000L, 5000L, 1000L)), .Names = c("Library", "Vol", 
"Dfactor"), row.names = c(NA, 6L), class = "data.frame")

и concvals

structure(list(FT265 = c(1.87143067658684, 6.42164423157045, 
3.2067011263946, 38.6127973672561, 31.413779293588, 35.5528208255031
), EL265 = c(17.1144442552411, 17.3273656558687, 14.7909715401529, 
NaN, NaN, NaN), FT325 = c(35.3550952814249, 37.9458212939415, 
29.8197141318635, 35.1760971346751, 36.7065424286613, 42.9943003679566
), wellid = structure(c("A1", "B1", "C1", "D1", "E1", "F1"), .Dim = c(6L, 
1L))), .Names = c("FT265", "EL265", "FT325", "wellid"), row.names = c(NA, 
6L), class = "data.frame")

Я пытаюсь найти способ выбрать правильный Dfactor из multipFactors на основе имени столбца concvals и умножить, скажем, concvals['FT325'] на соответствующий Dfactor. Умножение может быть выполнено либо на месте, либо в новом фрейме данных, я не возражаю.

Есть ли способ "R" сделать что-то подобное, или это может быть поводом для петли?

Извините - просто взглянув на пример, DFactor не является фактором в смысле R, это сокращение от коэффициента разбавления, поэтому на самом деле это число. В этом примере, похоже, есть только два фактора разбавления (5000, 1000), но могут быть и другие. Извините за отсутствие ясности.

Спасибо H


person Hassantm    schedule 21.09.2012    source источник
comment
Насколько велик набор данных? ряды? количество уровней каждой переменной?   -  person Tyler Rinker    schedule 21.09.2012
comment
Имеется 24 планшета, поэтому 24 строки в multipFactors и 24 столбца в углублениях плюс столбец wellID.   -  person Hassantm    schedule 21.09.2012
comment
Я бы, наверное, просто melt конвалентно, а потом merge двое.   -  person joran    schedule 21.09.2012


Ответы (1)


Это должно работать:

mapply("*", concvals[multipFactors$Library], multipFactors$Dfactor)
person Sven Hohenstein    schedule 21.09.2012
comment
Спасибо! Люблю это решение. У меня недостаточно очков, чтобы проголосовать, но я бы хотел. - person Hassantm; 21.09.2012