Я пишу код, который берет данные микроспутника и выводит сводку данных, таких как количество аллелей, размер выборки, количество пропущенных данных и т. Д. Я получил их, но у меня проблемы с получением частот аллелей. Я получаю сообщение об ошибке
"Ошибка в data.frame (..., check.names = FALSE):
аргументы подразумевают различное количество строк: 1, 0 "
на основе моего кода может кто-нибудь сказать мне, в чем проблема и как ее исправить.
Данные представляют собой файл Excel, который имеет 11 столбцов, но первый исключается, поскольку это не данные, используемые в вычислениях, оставляя мне 10 столбцов для работы. Существует пять локусов в диплоидном формате, поэтому по два столбца на локусы. Я приложил изображение того, на что похожи данные. Я должен сказать, что я начинающий пользователь R, поэтому, если мой код иногда груб или даже бессмысленен, пожалуйста, прости меня ... должен начать где-то.
Любой вклад приветствуется.
geno_data<-read.csv("Armadillo_only.csv")
OUT<-NULL
allele_summary<-function(x){
num_alle<-colSums(!is.na(x[,-1]))
tot_alle<-sum(num_alle)
samp_size<-length(x[,1])
na<-length(which(is.na(x[,-1])))
zeros<-length(which(x[,-1]==0))
missing_data<-sum(na,zeros)
only_alleles<-(x[,-1])
col_num<-ncol(only_alleles)
Это все одна функция, но вышеприведенная часть - это то, что мне нужно работать, когда она запускается как отдельная функция
loci<-(2*(unique(round((1:(col_num-2))/2)))+1)
for (i in loci){
a<-c(only_alleles[,i],only_alleles[,i+1])
a2<-as.data.frame(table(a))
missing<-a2[which(a2[,1]==0),]
a3<-a2[-which(a2[,1]==0),]
a4<-cbind(a3,a3[,2]/sum(a3[,2]))
output<-cbind(i,a4)
OUT <<- rbind(OUT,output)
}
}
allele_summary (geno_data)
Пример данных