簡體   English   中英

理解 rowwise() 和 c_across()

[英]Understanding rowwise() and c_across()

你好:誰能提供一個外行的解釋,為什么這兩種嘗試計算行平均值的方法不同? 謝謝。

library(tidyverse)
var1<-rnorm(100)
var2<-rnorm(100)
var3<-rnorm(100)

df<-data.frame(var1, var2, var3)

#ADD IN A MISSING VALUE
df[1,1]<-NA

#I thought this would work
df %>% 
  select(starts_with('var')) %>% 
  rowwise() %>% 
  mutate(avg=mean(., na.rm=T))
#This does work but I don't understand why
df %>% 
  rowwise() %>% 
  mutate(avg=
           mean(
             c_across(starts_with('var')), na.rm=T)
         )

  • . 代表整個數據集而不是分組數據。
  • 此外, mean不適用於數據幀。 (見mean(mtcars)

由於dplyr 1.0.0(或更高版本),您可以使用cur_data()獲取組中的數據,但要使用它mean您需要將其更改為 vector ,這可以使用unlistas.matrix 所以嘗試:

library(dplyr)

df %>% 
  select(starts_with('var')) %>% 
  rowwise() %>% 
  mutate(avg=mean(unlist(cur_data()), na.rm=T))

但是,您的第二種方法是使用rowwise的正確方法。

暫無
暫無

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

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