====== Sp: MacGregor, 2015 ====== FeO only. === Details === ^ Reference | | ^ Input | SiO2_wtp, TiO2_wtp, Al2O3_wtp, Cr2O3_wtp, FeO_wtp, MnO_wtp, MgO_wtp, NiO_wtp, CaO_wtp, Na2O_wtp, K2O_wtp | ^ Output | Si_pfu, Ti_pfu, Al_pfu, Cr_pfu, Fe_pfu, Mn_pfu, Mg_pfu, Ni_pfu, Ca_pfu, Na_pfu, K_pfu | * заголовок * краткое описание * статья * ссылка * карточка * подробное описание * код * тест ==== Source ==== recalc.sp_macgreg <- function (wtp_data, ...) { nms =c('SiO2_wtp', 'TiO2_wtp', 'Al2O3_wtp', 'Cr2O3_wtp', 'FeO_wtp', 'MnO_wtp', 'MgO_wtp', 'NiO_wtp', 'CaO_wtp', 'Na2O_wtp', 'K2O_wtp'); wct =c( 15.021, 19.97, 16.9935, 25.3317, 35.923, 35.469, 20.156, 29.347, 28.04, 30.9895, 47.098 ); hd =c( 4, 4, 3, 3, 2, 2, 2, 2, 2, 1, 1 ); pnms =c( 'Si_pfu', 'Ti_pfu', 'Al_pfu', 'Cr_pfu', 'Fe_pfu', 'Mn_pfu', 'Mg_pfu', 'Ni_pfu', 'Ca_pfu', 'Na_pfu', 'K_pfu'); ds <- selectNames(wtp_data, nms); dsDiv <- rowApply('/', ds, wct); dDiv <- rowSums(dsDiv)*hd; dRes <- 8*rowApply('/', ds, wct) / dDiv; names(dRes) <- pnms; res <-data.frame(Name=wtp_data$Name); return(cbind(res,dRes)); } recalc.sp_macgreg.test <- function () { src <- data.frame(Name='test', SiO2_wtp=0.41, Al2O3_wtp=69.78, Cr2O3_wtp=0.86, TiO2_wtp=0.06, FeO_wtp=8.24, MgO_wtp=21.89, CaO_wtp=0.18); result <- recalc.sp_macgreg(src); expect_equal(object = result$Al_pfu, 1.9937, tolerance = 0.05); expect_equal(object = result$Fe_pfu, 0.1671, tolerance = 0.05); expect_equal(object = result$Mg_pfu, 0.7909, tolerance = 0.05); }