私は下位評価でvariable_unmodified
とvariable
の値を持つことができるように、私のtibbleに変数のセットをコピーしたいと思います。古いスタイルのアンダースコアNSE select_()
の機能と.dots
を使用したハックのあるバージョンを用意しましたが、新しいNSEアプローチで整然とした評価のセマンティクスを使用したいと考えています。複数の列を選択し、複製し、名前を変更する方法は、きちんとした評価のセマンティクスを使用していますか?
これは私が欲しいものを行います。
tibble_to_max <- tibble(
"a_col" = c("1", "2", "3", "4"),
"max_1" = c("3;4", "2{3}4", "7", ".{1}"),
"max_2" = c("3;4", "2{3}4", "7", ".{1}")
)
cols_to_max <- c("max_1", "max_2")
unparsed_names <- paste0(cols_to_max, "_unparsed")
tibble_to_max %>%
bind_cols(select_(., .dots = setNames(cols_to_max, unparsed_names)))
は出力:
# A tibble: 4 x 5
a_col max_1 max_2 max_1_unparsed max_2_unparsed
<chr> <chr> <chr> <chr> <chr>
1 1 3;4 3;4 3;4 3;4
2 2 2{3}4 2{3}4 2{3}4 2{3}4
3 3 7 7 7 7
4 4 .{1} .{1} .{1} .{1}
しかし、私はselect()
と!!
でそれを行うにしようと、私は予想通り、.dots
は動作しません:
tibble_to_max %>%
bind_cols(select(., .dots = setNames(!!cols_to_max, !!unparsed_names)))
列の名前は希望通りにしません:
# A tibble: 4 x 5
a_col max_1 max_2 .dots1 .dots2
<chr> <chr> <chr> <chr> <chr>
1 1 3;4 3;4 3;4 3;4
2 2 2{3}4 2{3}4 2{3}4 2{3}4
3 3 7 7 7 7
4 4 .{1} .{1} .{1} .{1}
これを実行するための正しい方法は何ですか?また、別の変数としてunparsed_names
を定義回避するため、ボーナスポイント...
。これを行うのと同じだと思います: 'tibble_to_max%>%bind_cols(select(。、!! cols_to_max))' – bheavner
これはやっているのかどうかは分かりませんが、動作します... – CPak