[英]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.