Править страницу Ссылки сюда Это старая версия документа! Пересчет на кислород Наиболее примитивный метод расчета на заданное число атомов кислорода. Подробнее <note> Описание: 100% Код: 100% Тест: </note> Исходный код elements <- read.csv("constants_elements.csv",stringsAsFactors=F) oxides <- read.csv("constants_oxides.csv",stringsAsFactors=F) recalc.common_oxygen <- function (wtp_data, count=12, ...) { oxy_data = wtp_data[,grep("_wtp", names(wtp_data))]; ds = data.frame(); for (j in 1:nrow(oxy_data)) { row <- oxy_data[j,]; names(row) <- gsub('_wtp', "", names(oxy_data)); for ( i in 1:length(row)) { ox= names(row)[i] oxconst = subset(oxides,oxide==ox) catconst = subset(elements,element==oxconst$cation) anconst = subset(elements,element==oxconst$anion) row[[ox]] = (row[[ox]]/(catconst$weight*oxconst$cation_count+anconst$weight*oxconst$anion_count)); if (oxconst$anion == 'O' && oxconst$anion_count > 0) { row[[ox]] = row[[ox]] * oxconst$anion_count; } } csum = count/sum(row); for ( i in 1:length(row)) { ox= names(row)[i] oxconst = subset(oxides,oxide==ox); catconst = subset(elements,element==oxconst$cation) ; anconst = subset(elements,element==oxconst$anion) ; row[[paste0(oxconst$cation,'_pfu')]] = row[[ox]] * csum / oxconst$anion_count*oxconst$cation_count; } ds = rbind(ds,row) names(ds) <- names(row) } return(cbind(Name=wtp_data$Name,ds[,grep("_pfu", names(ds))])); } order10 recalc/common_oxygen.1441364779.txt.gz Последние изменения: 2018/11/12 15:08(внешнее изменение) Войти