這真的屬於「不要DO那!」的範圍。 ,但..交叉解析功能輸入參數
我寫了這個看看會發生什麼。
circit <-function(x=deparse(substitute(y)),y=deparse(substitute(x)))
{
return(list(x=x,y=y))
}
兩個例子:
> circit()
$x
[1] "deparse(substitute(x))"
$y
[1] "deparse(substitute(y))"
> circit(3)
$x
[1] 3
$y
[1] "3"
請注意,在輸出的 「x」 和 「y」 的細微交換。
我不能遵循邏輯,所以有人可以解釋參數解析器如何處理這種荒謬的默認輸入對嗎? (第二種情況很容易遵循)
「x」評估爲其中<非評估的「y」>是deparse(substitute(x))「call」結構在評估「x」時被解析。代替'deparse(substitute(x))',像'circit(,3 + pi^1.24)$ x'這樣簡單的調用表明「x」只是評估解析未評估的「y」調用。 –