У меня есть фрейм данных:
df<- data.frame(lep= c("Tarchon", "Tarchon", "Tarchon", "Tarchon", "Tarchon",
"Gonodonta","Gonodonta","Gonodonta", "Apatelodes"),
plant=c("Amphimoea","Desmotrichia", "Paches", "Neoxeniades",
"Desmotrichia","Neoxeniades","Amphimoea", "Acribia","Sychesia"),
freq=c(2,5,1,3,4,2,1,1,4))
, который я преобразую в матрицу, используя:
mat1<-acast(df, plant~lep, value.var="freq", sum)
В выходных данных алфавитные имена plant
и lep
, однако яхотите, чтобы порядок в кадре данных сохранялся в матрице.
Вот требуемый вывод:
mdat <- matrix(c(2,5,1,3,0,0,1,0,0,2,0,0,0,0,0,0,0,4), nrow = 6, ncol = 3, byrow = TRUE,
dimnames = list(c("Amphimoea","Desmotrichia", "Paches", "Neoxeniades",
"Acribia","Sychesia"),
c("Tarchon","Gonodonta", "Apatelodes")))
Я не неравнодушен к использованию acast
для этого, я только что нашел эту функцию полезной для типа фрейма данных, который у меня есть.Я не могу найти аргумент в acast
, который сохраняет порядок в фрейме данных.