#r #matrix
#r #матрица
Вопрос:
У меня есть значение fst (индексы молекулярного расстояния) между популяциями (которое не вычисляется по молекулярным данным, исходные необработанные данные неверны), но у меня есть данные об окружающей среде и местоположении (включая lon и широту) Я хотел бы использовать тест Mantel (r лучше) для проведения корреляции этих матриц расстояний. Однако я не могу получить пакеты, и, похоже, проблема в таблице fst, я создал таблицу csv, как показано ниже
1 2 3 4 5 6
0.0282 0 0.0266 0.5122 0.4784 0.5553
0.057 0.0266 0 0.4426 0.4042 0.5448
0.318 0.5122 0.4426 0 0.4527 0.6017
0.3412 0.4784 0.4042 0.4527 0 0.4171
0.4462 0.5553 0.5448 0.6017 0.4171 0
И я использую код для импорта или вычисления матрицы расстояний
library(ade4)
setwd(choose.dir())
df = read.table("hynobins_climate.csv", header= T,sep=",")
station.dists <- dist(cbind(df$lon, df$lat))
#This works fine for calculation of geo distance
fst=read.table("mtFst.csv",header=T)
mantel.rtest(station.dists, fst, nrepet = 9999)
Возвращается сообщение об ошибке: Ошибка в mantel.rtest(station.dists, fst, nrepet = 9999): ожидается объект класса ‘dist’
Как я мог бы провести свой тест mantel, если у меня есть только вычисленный fst вместо необработанных данных (и я могу использовать пакеты пакетов для генерации матрицы молекулярных расстояний.
Ответ №1:
Мое окончательное решение — «создать матрицу самостоятельно»
cbind(c(0,0.024, 0.0414, 0.9565, 0.9802, 1),c(0.024,0,0.0403,0.9515,0.9766,0.9979),c(0.414,0.403,0,0.9396,0.9643,0.9928)........
fst[upper.tri(fst,diag=TRUE)] <- NA
fst<-as.dist(fst)
Тогда это работает ~!