私は特定の接頭辞で始まる列の関数を実行できるようにする関数を構築しようとしています。私は名前を正しいものに評価する方法を理解するのに苦労しています。ビルドされた変数名のためのDplyr Tidyyeval
私はdplyr
ウェブサイトを見て、programmingについて語っていますが、正しく評価する方法を理解できませんでした。
私は@hadleyがtidyeval
Reprex
library(tidyverse)
tbl1 <- tibble(
urn = c(1 ,2 ,3),
a_width = c(10,20,30),
a_height = c(12,13,14),
b_width = c(25,50,75),
b_height = c(25,50,75)
)
my_mean <- function(x, group) {
width <- paste0(quo_name(group), "_width")
height <- paste0(quo_name(group), "_height")
summarise(x,
!!paste0(group, "_mean_width") := mean(!!width),
!!paste0(group, "_mean_height") := mean(!!height)
)
}
my_mean(tbl1, "a")
# # A tibble: 1 x 2
# a_mean_width a_mean_height
# <dbl> <dbl>
# 1 NA NA
# Warning messages:
# 1: In mean.default("a_width") :
# argument is not numeric or logical: returning NA
# 2: In mean.default("a_height") :
# argument is not numeric or logical: returning NA
あなたは 'summarize'コマンドでカンマを忘れたと思います。 – amarchin
あなたは正しいですが、コンマは見落とされましたが、それは問題の原因ではなく、貧弱なタイプ入力のケースです。 – Dan
確かに私はあなたのエラーを再現しようとしていましたが、逃したコンマはこれを不可能にしました:) – amarchin