Common: Cation method

Наиболее примитивный метод расчета на заданное число катионов.

Details

Reference
Input wtp
Results pfu

Использовать Проверить

  • заголовок
  • краткое описание
  • статья
  • ссылка
  • карточка
  • подробное описание
  • код
  • тест

Source

elements <- read.csv("constants_elements.csv",stringsAsFactors=F);
oxides <- read.csv("constants_oxides.csv",stringsAsFactors=F);

recalc.common_cation <- function (wtp_data, count=12, ...)
{
    
  data <- wtp_data[,grep("_wtp", names(wtp_data))];
 
  mass_factors <- c();
  cat_counts <- c();
  cat_names <- c();
 
  for (wtname in names(data))
  {
  oxname <- gsub('_wtp', "", wtname);

  oxconst = subset(oxides,oxide==oxname)
  catconst = subset(elements,element==oxconst$cation) 
  anconst = subset(elements,element==oxconst$anion) 

  mass_factors <- c(mass_factors, catconst$weight*oxconst$cation_count+anconst$weight*oxconst$anion_count);

  if (oxconst$cation_count > 0) cat_counts <- c(cat_counts, oxconst$cation_count) else cat_counts <- c(cat_counts, 1);
  cat_names <- c(cat_names, oxconst$cation);
  }
  
 
  data <- rowApply('/',data,mass_factors);
  data <- rowApply('*',data,cat_counts);
  
  data_sum_norm <- rowSums(data) / count;
  
  data <- data / data_sum_norm;
  
  names(data) <- paste0(cat_names,'_pfu');
  
  return(cbind(Name=wtp_data$Name,data));
}