繁体   English   中英

如何将函数参数传递给map_df()?

How do I pass a function argument into map_df()?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试创建一个函数来清除数据并在R中作为data.frame返回。

我正在使用map_df()函数将已清理的数据作为data.frame返回,并编写了一个函数来清理数据。

我要做的第一件事是从文件夹中提取文件列表,然后遍历它们并清理每个文件。 我有一个预定义的集合,用于指定在文件之间存在差异时要提取(存储在selectCols中)的列名称:

files <- list.files(filepath,full.names=F)
colInd <- which(names(fread(files[i],nrows=0)) %in% gsub("_","",selectCols))

我还有一个清理数据的函数,该函数使用fread()读取.csv文件。 它以colInd和i作为参数来迭代地清理文件。

cleanData <- function(files,i,colInd) {
    addData <- fread(files[i],select=c(colInd))
    [...]
}

总的来说,它看起来像这样(作为递归函数):

i <- 1
files <- list.files(filepath,full.names=F)

iterateCleaning <- function(files,i) {
    colInd <- (which(names(fread(files[i],nrows=0)) %in% gsubs("_","",selectCols))

    if (length(colInd)==length(selectCols)) {
        newData <- map_df(files,cleanData)
        saveToFolder(newData,i,files)
    }
    else {}

    i=i+1

    if (i<-length(files)){
        iterateCleaning(files,i)
    }
    else {}
}

当我尝试运行时未为函数指定参数时,出现以下错误:

Error in fread(files,select=c(colInd)): 
    argument "colInd" is missing, with no default.

当我将其插入map_df()时,我会这样做:

newData <- map_df(files,i,colInd,cleanData)

然后我得到这个错误:

Error in as_mapper(.f,...): object 'colInd' not found.

有解决此错误的建议吗? 据我了解,map_df()适用于函数中的每个元素,但我不需要将其应用于i和colInd输入,我只需要它们用于在map_df()中调用的函数。 如何在需要附加参数的函数上调用map_df()?

我阅读了文档,但似乎有些混乱。 它表示要为单参数函数使用“。” 以及使用.x和.y的两个参数的函数,但是我不确定这是什么意思。 我最初的猜测是这样的,但是这两行都不行):

newData <- map_df(files,cleanData,.i,.colInd)

newData <- map_df(files,cleanData,.x=i,.y=colInd)

有什么建议吗? 如果之后仅在函数的输出上调用map_df(),我是否会有相同的输出?

问题暂未有回复.您可以查看右边的相关问题.
1 使用 purrr::map_df 在函数中转发参数

我正在尝试创建一个函数,该函数使用readxl::read_excel读取 excel 工作簿中的所有工作readxl::read_excel并将它们绑定到单个数据框中,并允许我将附加参数传递给read_excel 。 我可以做第一部分,但不能做第二部分。 我应该返回一个文件,而不是我收到一个错 ...

5 将几个参数传递给map()的函数

例如,如果要检测数组中的所有奇数并将它们设置为零,则可以使用: 就像魅力一样。 但是当我尝试类似 它需要两个参数。 同样 不起作用。 如何在map()传递divisor参数? ...

2018-03-15 14:18:19 4 703   python
7 在map_df函数中提取编码UTF-8

能否请你帮我。 我希望此编码支持UTF-8 full_data &lt;- dir("path", full.names = T) %&gt;% map_df(read.xlsx, sheetIndex = 2)它不支持UTF-8编码,对我来说至关重要 当我尝试扩展支持编码参数的read.xls ...

2021-01-26 12:40:30 0 28   r/ utf-8
8 map_df 中的 `[` 参数是什么意思?

我想出了以下使用 purrr 包在 R 中创建数据框的方法: 虽然我以前做过 谁能解释[论点或指导我找到我可以使用的资源 谢谢 我已经查看了https://purrr.tidyverse.org/reference/map.html ,但我没有发现任何有用的东西。 list 是一个包含 n ...

2019-08-16 16:26:54 1 127   r/ purrr
9 将其他参数传递给map()中传递的函数

我想将一个函数传递给map(),该函数需要使用其他数据(例如,作为参数传递给scala程序的数据)。 例如: 我有一个清单: 并将乘数值作为命令行参数传递。 我有一个功能 现在,我要在清单上执行map(),如下所示: 当然,这是行不通的,因为map只需 ...

10 map_df函数有效,但是在Plumber API中失败

我正在通过plumber软件包api进行R部署,代码本身在本地时可以完美运行,但是当它在plumber的环境中时,它会&lt;simpleError in do.call(private$func, args, envir = private$envir): 'what' must be a f ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM