首页 > 解决方案 > 从数据框中填充矩阵

问题描述

我有一个数据框,其中包含 3 个感兴趣的变量

loc1 - 林地中的位置

loc2 - 与 loc 1 中的所有位置相同

ninds - 这是在 loc1 看到的每周平均人数,随后在一年中在林地的任何其他位置看到(你可以忽略最后两个 cols,对于这个问题并不重要)

> head(shared2015)
  loc1 loc2      ninds         p.d       p.sym
1   1A   1A 36.0000000 1.000000000 1.000000000
2   1B   1A  2.3333333 0.028243818 0.019634878
3   1C   1A  0.2222222 0.002828977 0.001951522
4   1D   1A  0.1250000 0.002155172 0.001373626
5   1E   1A  0.2222222 0.009460548 0.004568106
6   1F   1A  0.0000000 0.000000000 0.000000000

我正在尝试用名为 loc1 的行和名为 loc2 的列填充矩阵,然后显示这些站点之间的共享个体

所以我创建了一个填充有 NA 的空白矩阵

site.loc2<-sapply(shared2015,function(a)unique(shared2015$loc2))
site.loc1<-sapply(shared2015,function(a)unique(shared2015$loc1))
site.loc1<-site.loc1[,1]
site.loc2<-site.loc2[,1]
n.sites<-length(site.loc2)
share.x<-matrix(NA,n.sites, n.sites, dimnames = list(site.loc1,site.loc2))

下一步是我完全迷失的地方,我找不到一种方法来以我想要的方式填充矩阵理想情况下我想要这样的东西,我可以看到所有位置和他们之间共享的所有个人

    1A  1B  1C ...
1A  36  2.3 0.2
1B  2.3 86  6.7

第一次在这里发帖所以放轻松....提前谢谢

标签: rmatrix

解决方案


尝试这个

share.x[as.matrix(shared2015[, c("loc1", "loc2")])] <- shared2015$ninds

推荐阅读