在 R 中,逐行迭代 data.frame 并访问列值

时间:2021-01-29 20:48:08

标签: r dplyr purrr

我正在尝试迭代数据框的抛出并访问每行列中的值。也许,我需要一个范式转变。我尝试了一种矢量化方法。我的最终目标是在每一行中使用特定的列值来过滤另一个数据框。

任何帮助将不胜感激。

df <- data.frame(a = 1:3, b = letters[24:26], c = 7:9)

f <- function(row) {
  var1 <- row$a
  var2 <- row$b
  var3 <- row$c
}

pmap(df, f)

有没有办法在 purrr 中做到这一点?

2 个答案:

答案 0 :(得分:1)

library(tidyverse)

df <- data.frame(a = 1:3, b = letters[24:26], c = 7:9)

f <- function(row) {
  var1 <- row$a
  var2 <- row$b
  var3 <- row$c
}



df %>%
  split(rownames(.)) %>%
  map(
    ~f(.x)
  )

答案 1 :(得分:1)

使用pmap,我们可以做到

library(purrr)
pmap(df, ~ f(list(...)))
#[[1]]
#[1] 7

#[[2]]
#[1] 8

#[[3]]
#[1] 9

或者将 rowwisecur_data 一起使用

library(dplyr)
df %>%
    rowwise %>%
    transmute(new = f(cur_data()))

-输出

# A tibble: 3 x 1
# Rowwise: 
#    new
#  <int>
#1     7
#2     8
#3     9
相关问题