dplyr :: mutate用外部函数-返回0

时间:2020-05-28 13:45:22

标签: r

这是我的第二次发帖,希望这段代码可重复。 我正在尝试列出每个关键词和PUBMED出版物的数量。我创建了一个使用Entrez库的函数。然而, 到目前为止,该功能可以通过手动处理来实现,但是当我尝试在df上运行它时,它会返回零。

##librarires
#install.packages("rentrez")
library(tidyverse)
library(rentrez)

keywords <- structure(list(keyword = c("ד×\231סקצ×\231×” 1 â\200“ גב", 
                                       "Netterâ\200\231s atlas (6th edition): Plates 171", "Grant's dissector (12 edition): pages 129-135", 
                                       "Back â\200“", "trapezius muscle", "deltoid muscle", "teres major/minor muscle", 
                                       "latissimus dorsi muscle", "serratus anterior/posterior superior/inferior muscle", 
                                       "levator scapulae", "rhomboid major/minor muscle", "erector spinae muscle", 
                                       "thoracolumbar fascia.", "Bone â\200“", "Clavicle", "acromial/sternal end", 
                                       "shaft body", "subclavian groove", "conoid tubercle", "trapezoid line"
)), row.names = c(NA, -20L), class = c("tbl_df", "tbl", "data.frame"))


articles_number <- function(trm) {
  trm<- paste(trm,"[All Fields]")
  pkg_search <- entrez_search(db="pubmed", 
                              term=trm
  )
  return(pkg_search$count) }
pubmed_count <- keywords %>%
  mutate(cnt = articles_number(keywords))

##As an example, running this function only on clavicle reruns a non zero number
articles_number("Clavicle")

使用更大的数据集运行时,我还有第二个问题,但我稍后再上传。 有什么想法吗?非常感谢和帮助!

1 个答案:

答案 0 :(得分:0)

有两个问题。首先是错字。您的keywords数据框没有名为keywords的列。它称为keyword,因此mutate调用将找不到keywords。其次,您的articles_number函数未向量化,因此需要进入sapply

pubmed_count <- keywords %>% mutate(cnt = sapply(keyword, articles_number))

pubmed_count
#> pubmed_count
#> # A tibble: 20 x 2
#>    keyword                                                cnt
#>    <chr>                                                <int>
#>  1 דיסקציה 1 – גב                                0
#>  2 Netter’s atlas (6th edition): Plates 171               0
#>  3 Grant's dissector (12 edition): pages 129-135            0
#>  4 Back –                                               273
#>  5 trapezius muscle                                      4129
#>  6 deltoid muscle                                        3216
#>  7 teres major/minor muscle                                10
#>  8 latissimus dorsi muscle                               4580
#>  9 serratus anterior/posterior superior/inferior muscle     0
#> 10 levator scapulae                                      1406
#> 11 rhomboid major/minor muscle                              4
#> 12 erector spinae muscle                                  335
#> 13 thoracolumbar fascia.                                 9228
#> 14 Bone –                                               212
#> 15 Clavicle                                              8946
#> 16 acromial/sternal end                                     9
#> 17 shaft body                                            1386
#> 18 subclavian groove                                        5
#> 19 conoid tubercle                                         15
#> 20 trapezoid line                                           1
相关问题