簡體   English   中英

從兩個 dataframe 列到 R 中的現有 function 的循環名稱

[英]Loop names from two dataframe columns through an existing function in R

我在 dataframe 中有一個植物名稱列表。 植物名稱以“屬”后跟“種”的對聯形式出現。 在我的情況下,對聯已經跨列拆分(這應該會有所幫助)。 作為三個物種(Helianthus annuus、Pinus radiatia 和 Melaleuca leucadendra)的虛擬示例:

df <- data.frame(genus=c("Helianthus", "Pinus", "Melaleuca"), species=c("annuus","radiata", "leucadendra"))

我想在 package “Taxize”中使用 function 來對照數據庫(IPNI)檢查這些名稱。 沒有批次 function 用於此,煩人的查詢單個名稱的格式是:

checked <- ipni_search(genus='Helianthus', species='annuus')

我需要一個循環來將每個屬名及其相關物種名輸入到 function 中。 我可以做到這一點只是屬:

list <- df$genus
checked <- lapply(list, function(z) ipni_search(genus=z))

但我被各種各樣的結纏住了,試圖通過它傳遞物種。

任何幫助表示贊賞! 干杯

在索引上循環(或*apply ),而不是實際值:

checked = lapply(
  1:nrow(df),
  function(i) ipni_search(genus = df$genus[i], species = df$species[i])
)

或者,您可以使用Map用於並行迭代多個向量/列表:

checked = Map(ipni_search, genus = df$genus, species = df$species)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM