【发布时间】:2020-12-02 19:55:11
【问题描述】:
我是一名在家工作的一年级博士生,在大流行期间依靠最少的支持。感谢您在这个主题上的指导。
-我有一个名为spsp 的数据框。在这个数据框中,我有一个名为 BOLDQUERY 的列(或变量),其长度为 7030 个物种名称或观察值
(spsp$BOLDQUERY)
-我要查询的服务器叫BOLD。这类似于 NCBI,但适用于条形码。
(library(bold))
但 BOLD 服务器在重载之前一次只接受 100 个查询,并且不返回任何查询。
我想将 BOLDQUERY 变量分成 100 个观察值的块,然后将我的查询结果中的表格打印到 BOLD 服务器。
例如用于观察 1 到 100
spspbold1.100 <- tbl_df(bold_specimens(taxon = spsp$BOLDQUERY[1:100], geo = "Italy"
write.csv2(spspbold1.100, "spsp1.100.csv", row.names=FALSE)
但要涵盖所有观察结果,这意味着将变量 BOLDQUERY 拆分为 aprox(7030/100) 71 个片段并输入范围 71 次。
必须有一个循环可以避免重新键入范围 71 次, 你将如何循环这个过程? 我非常感谢您在正确方向上的指导。 我是 R 的初学者。
非常感谢!
这样做的效率低下:
手动输入和拆分 BOLDQUERY 到 100 个观察的位,直到我达到 7030,或至少 7000
library(bold)
library(tidyverse)
spspbold1.100 <- tbl_df(bold_specimens(taxon = spsp$BOLDQUERY[1:100], geo = "Italy"))
write.csv2(spspbold1.100, "spspbold1.100.csv", row.names=FALSE)
.
69 次
.
.
spspbold6901.7000 <- tbl_df(bold_specimens(taxon = spsp$BOLDQUERY[6901:7000], geo = "Italy"))
write.csv2(spspbold6901.7000 "spspbold6901.7000.csv", row.names=FALSE)
在我想要创建的循环中
我想查询相同的范围,例如: 1到100, 101 到 200, 201 到 300, . . . 直到 7030。
然后定义:
k<- 1
j<- 0:round(n/100) #0 to 70
l<- 1:ceiling(n/100) #1 to 71
library(tidyverse)
##number of observations in BOLDQUERY
n <- as.numeric(spsp %>%
select(BOLDQUERY) %>%
summarise(
n()
))
1:100 和范围的下限和上限可以根据以下等式表现
-下限方程(ll = k*1 +100j)
在哪里 1 = 1*(k=1) +100(j=0),其中 k=1(始终)且 j 的范围为 [0;round(n/100)]
-上限方程(ul = 100*l)
例如 100 100 = 100(l=1) 其中 l=j+1
如何循环播放?
for ( i to j?????)
{
spspbold**ll**.**ul** <- tbl_df(bold_specimens(taxon = spsp$BOLDQUERY[ll:ul], geo = "Italy"))
write.csv2(spspbold**ll**.**ul**, "spspBOLD**ll**.**ul**.csv", row.names=FALSE)
}
我很感激!
【问题讨论】:
标签: r loops for-loop server range