とtibbleを返すように
。ここでは、ハードコードされた名前と一致するように名前を設定しています。setNames
を使用して名前を変更します。
updatedFF <- function(df, col){
colNames <-
setNames(
paste0("c", 1:3)
, paste0(col, 1:3))
df %>%
mutate_at(col, funs(c1 = .*2, c2 = .*3, c3 = .*4)) %>%
rename_(.dots = colNames)
}
df %>% updatedFF("x")
は、あなたが複数の列名を渡した場合、これは失敗すること
# A tibble: 5 × 5
x y x1 x2 x3
<int> <int> <dbl> <dbl> <dbl>
1 1 101 2 3 4
2 2 102 4 6 8
3 3 103 6 9 12
4 4 104 8 12 16
5 5 105 10 15 20
注意を与えます。これは、単一の列名を渡すときに、名前付き関数の前に列名が既に付加されているためです。あなたは「x」および「y」の両方に合格した場合は、元のff
機能でこれを見ることができます:
df %>% ff(c("x", "y"))
あなたがいることを確実にすることもできますので、この不一致は時折、問題を引き起こす可能性があります
に
# A tibble: 5 × 8
x y x_c1 y_c1 x_c2 y_c2 x_c3 y_c3
<int> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 101 2 202 3 303 4 404
2 2 102 4 204 6 306 8 408
3 3 103 6 206 9 309 12 412
4 4 104 8 208 12 312 16 416
5 5 105 10 210 15 315 20 420
を与えます1つの列のみが使用されている場合でも列名を含むように名前を設定することにより、一貫して処理されます。ここでは、それだけで1つの列のみが渡され、それが複数の列が渡されたときに発生する形式に一致するようにそれらを設定します。1列で
されている場合、それはずっと前に(ただし "と同じように機能名をリセット_c」)が含ま:
df %>% moreComplexFF(c("x"))
2つのカラムを持つ
x y x_c1 x_c2 x_c3
<int> <int> <dbl> <dbl> <dbl>
1 1 101 2 3 4
2 2 102 4 6 8
3 3 103 6 9 12
4 4 104 8 12 16
5 5 105 10 15 20
を与え、それが(それがエラーをスローしません)名前だけを残します:
df %>% moreComplexFF(c("x", "y"))
は[(1、 "X":3)paste0]
x y x_c1 y_c1 x_c2 y_c2 x_c3 y_c3
<int> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 101 2 202 3 303 4 404
2 2 102 4 204 6 306 8 408
3 3 103 6 206 9 309 12 412
4 4 104 8 208 12 312 16 416
5 5 105 10 210 15 315 20 420
非dplyr溶液が単に 'DFかもしれない与える< - DF $第X *担当者(2:4、各=長さ( df $ x)) '(これは簡単に関数にラップすることができます) –