我注意到,在某些情況下(我仍然是R的初學者),多行指令不能按原樣合併爲簡單行指令。我們舉一個例子,這是我最近在線上的一個教訓:R控制檯:單行指令vs多行指令
> make.power <- function(n) {
+ pow <- function(x) {
+ x^n
+ }
+ pow
+ }
是否是'make.power'函數的定義。然後,我可以定義「立方體」或廣場功能
> cube <- make.power(3)
> square <- make.power(2)
然後,如果我嘗試與完全同樣的語法一行定義make.power:
> make.power <- function(n) { pow <- function(x) { x^n } pow }
這將提高。一個make.power ......‘「在意外的符號’,這說的下面一行的代碼將工作:
> make.power <- function(n) { pow <- function(x) { x^n }}
,當切換到多行,仍然可以工作
!> make.power <- function(n) {
+ pow <- function(x) {
+ x^n
+ }
+ }
我必須承認我很困惑。我的問題如下:
- 爲什麼我不能將多行代碼合併到單行指令中?
- 在函數的第一個多行定義中,爲什麼一個 在定義函數後立即回想'pow'函數,其中 顯然沒有興趣,因爲沒有召回 的相同代碼是可以的!
編輯:下面#Dwin的答案,這是真的,下面的表達式:
> make.power <- function(n) { pow <- function(x) { x^n }; pow }
完美。這個也是如此:
> make.power <- function(n){; pow <- function(x) {; x^n }; pow }
因此,似乎「;」可能在某些情況下是強制性的(這裏是在「}」和「pow」之間),而在其他情況下(在「{」和「pow」之間)是強制性的?
謝謝。我更新了我的問題,經過一些其他測試後,似乎根據具體情況使用半列符號是必需的或可選的。我們是否同意這樣的事實,即在原始教學中,第二個「戰俘」符號沒有任何利益? –
是的。我們同意。而且,第一個也沒有效果。 –
我的確猜測我確實已經閱讀了「Intro to R」的第1.8節...... mea culpa! –