我有一个尺寸为1042x64的Tibble_data.Frame.列是两栖动物科,行是该科中所有物种的名称.前5行2列如下所示:
> amphilist[1:5,1:2]
A tibble: 5 × 2
`Allophrynidae_(1_genus;_3_species)` `Alsodidae_(3_genera;_26_species)`
<chr> <chr>
1 Allophryne_relicta Alsodes_australis
2 Allophryne_resplendens Alsodes_barrioi
3 Allophryne_ruthveni Alsodes_cantillanensis
4 NA Alsodes_coppingeri
5 NA Alsodes_gargola
各科的种类不同,最大的有1,042种,最小的只有1种.除了唯一的一科有1,042种外,所有的列都充满了Nas,组成了1,042行.为了下一步的分析,我需要从每个家族中随机排序一定数量的物种,但是我一直在为我的所有列获取Nas,即使其中没有Nas的列也是如此.以下是我到目前为止所做的:
我创建了一个循环来获取物种丰富度(spcR),并将其保存在df"species_no"中.然后用一个"ifelse"子句输入我需要的物种数量并将其保存到df #中.
amphilist <- read_xlsx("amphilist.xlsx", col_names = TRUE)
families <- colnames(amphilist)
family_n <- ncol(amphilist)
spcR <- vector(length = family_n)
for(i in 1:length(families)) {
families.i <- families[i]
spcR[i] <- colSums(amphilist[,families.i] > 0, na.rm = TRUE)
}
species_no <- data.frame(families, spcR)
species_no$choose <- ifelse(species_no$spcR > 50, ceiling(species_no$spcR/10),
ifelse(species_no$spcR >= 5 & species_no$spcR <= 50,
5, species_no$spcR))
> species_no[1:3,]
families spcR choose
1 Allophrynidae_(1_genus;_3_species) 3 3
2 Alsodidae_(3_genera;_26_species) 26 5
3 Alytidae_(2_subfamilies;_3_genera;_12_species) 12 5
从这里开始,我就被卡住了,并得到了错误Nas.我创建了一个具有我需要的元素数量的向量,但是我不能做出随机 Select 来工作.我想从每一列中获得由Choose_no向量定义的物种数量,而不考虑Nas#
choose_no <- species_no$choose
set.seed(43)
for(i in 1:length(families)) {
families.i <- families[i]
choose_no.i <- choose_no[i]
rand_amphilist <- amphilist[sample(amphilist[,i],
size = choose_no.i), ]
}
有没有人能帮帮我?非常感谢!