簡體   English   中英

使用 purrr 進行 rowwise 操作

[英]Using purrr for rowwise operations

我希望使用 purrr 進行行操作,其中每個元素在函數中用作字符串。 我得到的錯誤是它不能將 $ 歸因於原子向量。 下面是一個例子:

test_function = function(dat_) {
  
  petal_width = dat_$Petal.Width
  sepal_width = dat_$Sepal.Width
  petal_length = dat_$Petal.Length
  sepal_length = dat_$Sepal.Length
  
  list(petal_length,sepal_length,sepal_width,petal_width) %>%
    bind_cols -> test
  
  return(test)
  
}

apply(iris, 1, test_function)

不確定您的預期輸出是什么,但您可以使用pmap執行逐行操作。 但是, pmap將每一行作為向量而不是數據幀傳遞,因此$將不起作用。 您可以將函數更改為:

library(tidyverse)

test_function = function(dat_) {

  petal_width = dat_[['Petal.Width']]
  sepal_width = dat_[['Sepal.Width']]
  petal_length = dat_[['Petal.Length']]
  sepal_length = dat_[['Sepal.Length']]
  tibble(a = petal_length,b = sepal_length,
         c = sepal_width,d = petal_width) -> test
  return(test)
}

您可以將pmap用作:

iris %>% mutate(data = pmap(select(., matches('Sepal|Petal')), 
               ~test_function(c(...)))) -> tmp

每行數據都是該行數據的一個小標題。

tmp$data[[1]]
# A tibble: 1 x 4
      a     b     c     d
  <dbl> <dbl> <dbl> <dbl>
1   1.4   5.1   3.5   0.2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM