gpt4 book ai didi

r - 理解 rowwise() 和 c_across()

转载 作者:行者123 更新时间:2023-12-03 23:03:10 24 4
gpt4 key购买 nike

你好:谁能提供一个外行的解释,为什么这两种尝试计算行平均值的方法不同?
谢谢。

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 中使用它您需要将其更改为矢量,这可以通过 unlist 完成或 as.matrix .所以尝试:
    library(dplyr)

    df %>%
    select(starts_with('var')) %>%
    rowwise() %>%
    mutate(avg=mean(unlist(cur_data()), na.rm=T))
    但是,您的第二种方法是使用 rowwise 的正确方法。 .

    关于r - 理解 rowwise() 和 c_across(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64282839/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com