我得到一個R代碼片段,其內容如下 -
library(dplyr)
DF = data. frame('A' = 1。 3, 'B' == 1: 3)
DF %>% mutate(! ! aa := A*2)
然而,我未能運行這段代碼。但我無法理解上面一行的!!是什么?以及:=的意義是什么?
它是否類似于DF %>% mutate('aa' := A*2)?
如果有任何線索,我們將非常感激。
uj5u.com熱心網友回復:
根據?"!"
在運算式被完全評估之前,強制提前評估運算式的一部分有時是很有用的。tidy eval框架為不同的使用情況提供了幾個強制運算子。bang-bang 運算子 !!! 強制執行一個單一的物件。
不幸的是,R對=的LHS所支持的運算式種類要求非常嚴格。這就是為什么rlang將walrus運算子:=解釋為=的別名。你可以用它來提供名字,例如a := b相當于a = b。
如果我們需要在一個更普遍的情況下這樣做,即從第二個資料中對列值進行子集,并在第一個資料中創建另一個列值作為列名
。library(dplyr)
DF %>%。
mutate(!! (DF1 %>%)
filter(X1 == 1) %>%
拉(X2)) 。 = 'a')
輸出
A B BB
1 1 1 a
2 2 2 a
3 3 3 a
data
DF1 = data. frame(X1 = 1。 X2 = 'BB')
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/332220.html
標籤:
