【发布时间】:2021-12-14 20:15:35
【问题描述】:
我正在做一个项目,我正在尝试获取一个只有一列包含单词的数据框,然后尝试构建一个循环,该循环将从 Merriam-Webster API 中提取单词的一些数据,然后放置它进入一个新的数据框。
希望最终的数据框如下所示:
name | class | pronunciation | definition
ambit noun am*bit circuit, compass
到目前为止我的代码:
words_for_loop 数据帧
diurnal
omnibus
chatelaine
mantic
limitrophe
oaf
代码:
for (i in seq_along(words_for_loop)) {
url_word_vector <- paste("https://www.dictionaryapi.com/api/v3/references/collegiate/json/", words_for_loop[[i]], "?key=numbers", sep = "")
data_holder <- tibble()
data_loop <- fromJSON(url_word_vector, flatten = TRUE) %>%
select(meta.id, fl, hwi.hw, shortdef) %>%
dplyr::rename(name = meta.id, class = fl, pronunciation = hwi.hw, definition = shortdef)
data_holder <-
data_holder %>%
bind_rows(data_loop)
}
结果是一个空的小标题。我认为我在正确的轨道上,因为运行url_word_vector 的结果是:
[1] "https://www.dictionaryapi.com/api/v3/references/collegiate/json/diurnal?key=99820690-b2a0-4aa3-902a-f54c7fa3c685"
[2] "https://www.dictionaryapi.com/api/v3/references/collegiate/json/omnibus?key=99820690-b2a0-4aa3-902a-f54c7fa3c685"
[3] "https://www.dictionaryapi.com/api/v3/references/collegiate/json/chatelaine?key=99820690-b2a0-4aa3-902a-f54c7fa3c685"
[4] "https://www.dictionaryapi.com/api/v3/references/collegiate/json/mantic?key=99820690-b2a0-4aa3-902a-f54c7fa3c685"
[5] "https://www.dictionaryapi.com/api/v3/references/collegiate/json/limitrophe?key=99820690-b2a0-4aa3-902a-f54c7fa3c685"
[6] "https://www.dictionaryapi.com/api/v3/references/collegiate/json/oaf?key=99820690-b2a0-4aa3-902a-f54c7fa3c685"
我只是不知道如何让它循环这些单独的调用。我需要在循环内嵌套循环吗?只是在寻找下一步。谢谢!
【问题讨论】:
-
(1) 您在循环中使用
words_for_loop[[1]]。你拼错了words_for_loop[[i]]吗? (2) 在循环中定义data_holder <- tibble()。这会导致data_holder在循环的每次迭代中被清空。我想你把这个移到外面循环。 (3) 我想你想在rename函数之后直接传递bind_rows部分并将其直接分配给data_holder。在这种情况下,您不需要data_loop。 -
至 (1):我的错误。我希望
words_for_loop是一个向量。 -
嘿马丁,[[1]] 应该是 [[i]]