Это старая версия документа!


Пересчет на катионы

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

Подробнее

В качестве основы взят катионный метод по Бронеман-Старынкевич bs1964. Анионы делятся на 1.

<note>

  • Описание: 80%
  • Код: 100%
  • Тест: :?:

</note>

Код

recalc.common_cation <- function (wtp_data, count=12, ...)
{
  
  elements <- read.delim("constants_elements.csv", dec=".",sep = ";",stringsAsFactors=F)
  oxides <- read.delim("constants_oxides.csv", dec=".", sep = ";",stringsAsFactors=F)
   
  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));
}
  • recalc/common_cation.1441364779.txt.gz
  • Последние изменения: 2018/11/12 15:08
  • (внешнее изменение)