使用R,dplyr和rowwise时,如何定义一个变量来记录已处理的行数?

我有一个需要很长时间才能运行的功能。因此,我想知道我的数据框有多少行被处理。通常,我们可以在for循环中定义一个变量来轻松处理此问题。但是我不知道如何在dplyr中做到这一点。

让我们说代码是:

library(tidyverse)

myFUN <-functin (x) {
  x + 1
}

a <- tibble(id=c(1:3),x=c(3,5,1))

a1 <- a %>%
  rowwise() %>%
  mutate(y=myFUN(x))

我希望在代码的某个地方,我可以定义一个变量i。每次处理一行时,该值将加1,然后在控制台中打印其值,例如:

1
2
3
fwangeling 回答:使用R,dplyr和rowwise时,如何定义一个变量来记录已处理的行数?

是否可以将另一个变量传递给函数,该变量将是数据帧的行号,并在函数中打印出来。像

myFUN <-function (x,y) {
   message(y)
   x + 1
}

然后使用

library(dplyr)
a %>%  mutate(y = purrr::map2_dbl(x,row_number(),myFUN))

#1 
#2 
#3 
# A tibble: 3 x 3
#     id     x     y
#  <int> <dbl> <dbl>
#1     1     3     4
#2     2     5     6
#3     3     1     2

如果函数是矢量化的,则可以放开map_dbl来做

a %>% mutate(y= myFUN(x,seq_len(n())))
本文链接:https://www.f2er.com/3119942.html

大家都在问