我有一个植物拉丁名称的数据框,另一个文件夹GBIF_data
存储下载的gbif数据,以csv格式命名,由数据框中的拉丁名称命名,我想mutate
一个新列来存储每个植物拉丁名称从GBIF下载的数据量,以下是代码:
read.csv("data.csv") %>%
mutate(OCCURRENCES = nrow(read.delim(CSVPATH))) #csv files downloaded from GBIF use tab as delimiter so here read.delim should be used
数据框看起来像这样(这里我只显示CSVPATH
列,它是通过连接植物拉丁名之前的路径并将拉丁名中的空格替换为下划线而发生变化的,其他与主题无关的列已被省略):
CSVPATH
../GBIF_data/Lycopodium_cernuum.csv
../GBIF_data/Lycopodium_japonicum.csv
../GBIF_data/Lycopodiastrum_casuarinoides.csv
../GBIF_data/Selaginella_uncinata.csv
../GBIF_data/Selaginella_doederleinii.csv
../GBIF_data/Equisetum_ramosissimum.csv
../GBIF_data/Ophioglossum_reticulatum.csv
../GBIF_data/Osmunda_vachellii.csv
../GBIF_data/Lygodium_japonicum.csv
../GBIF_data/Lygodium_microphyllum.csv
并且存储在GBIF_data
文件夹中的csv数据的名称只是用下划线_
替换了拉丁名称中的空格。当我运行代码时,它报告了错误:
Error in `mutate()`:
! Problem while computing `OCCURRENCES = nrow(read.delim(CSVPATH))`.
Caused by error in `h()`:
! error in evaluating the argument 'x' in selecting a method for function 'nrow': invalid 'description' argument
我想知道为什么dplyr::mutate
在这种情况下不起作用?它通过字符串操作成功地将拉丁名称变异为CSVPATH,但在阅读和计算另一个csv文件的行号时失败了。
先谢谢你了!
1条答案
按热度按时间yeotifhr1#
我们可能需要
rowwise
,因为read.delim
没有矢量化,即它一次只读取一个文件或者另一个选项是
map