作者cawaiilulu (across)
看板Statistics
標題[問題] 來問一個s plus的function基礎問題
時間Fri Mar 2 12:22:23 2012
#
a
function(in.x)
{
double.it.and.add.y <- function(x)
{
2 * x + y # Function hopes to find "y"
}
y <- 3 # Here it is
double.it.and.add.y(in.x) # But will it work? Noooooo.
}
a (3)
**************************************************************
應該是跑不出來a(3) 因為會出現error
Problem in double.it.and.add.y(in.x): Object "y" not found
Use traceback() to see the call stack
提示為 應該要改寫成以下兩行
y <- 3
assign ("y", y, frame=1)
**************************************************************
以下是我的問題
1.
assign("y",y,frame=1)跟
y<-3
誰應該在前面?
我把y<-3放在前面 假設我沒有初始值 是不是給NULL之類的? y<-NULL 以備需求?
1.function(in.x)那個in.x是甚麼意思? 如果處在不同的frame即便是兩個function(x)
不是也不應該造成困擾嗎? 還是in.x有其他用意而非只是x替代品?
2.a
function.....
這樣就是宣告a為函數(in.x)的方法嗎?
a<-function{} 呢? 差別在哪?
3.這個問題應該有點蠢
如果有一頁code 就直接 function(a,c,f,g){
.........
}
是否我要使用此function時要先給它一個名字
ex:temp<-function(a,c,f,g){.....} (複製貼上完整的code)
跑一次
還是有甚麼方法可以直接使用沒有名字的function?
我跑過一個層層{} 組成的function 用a (隔一行) function(){} 跟a<-funciton(){}
都可以跑出來 但是兩個差了一個output (就是ㄧ個可以跑出兩個output 一個只有一個)
所以我猜想兩個是否應該不一樣 不過因為我才疏學淺 對functions的理解還沒到位
就上來請專業的指點看看 感謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 174.101.220.112
1F:推 clickhere:a <- function(a,c,f,g){ ... } 才是對的. 03/02 12:59
2F:→ clickhere:原function, 2, 3, 都是錯的. 03/02 13:00
3F:→ clickhere:in.x 是 a function 的參數. 03/02 13:02
4F:→ clickhere:如P x 是 double.it.and.add.y function 的參數. 03/02 13:03
5F:→ clickhere:y 是相對於 double.it.and.add.y 全域變數. x 是區域 03/02 13:03
6F:推 clickhere:assign("y", 3, frame=1) 03/02 13:08
感恩 請再追問 因為網頁上有載明說
要改寫成 y<-3
assign("y",y,frame=1)
(卻沒有寫要改寫在哪裡 改寫成怎樣)
我的作法是把第二個function改成 function(x,y)然後 將上面那兩行放入第二個{}中
這樣也可以跑得出東西來 請問這樣跟assign("y",3,frame=1)的作用是ㄧ樣的嗎?
再次感謝~
7F:→ gsuper:改成 y <<- 3 03/02 14:12
8F:→ gsuper:不建議在 function 裡面包 function,過一段時間後會看無 03/02 14:14
感謝~~
※ 編輯: cawaiilulu 來自: 174.101.220.112 (03/02 16:10)