[問題] 來問一個s plus的function基礎問題

看板Statistics作者 (across)時間14年前 (2012/03/02 12:22), 編輯推噓2(206)
留言8則, 2人參與, 最新討論串1/1
# 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

03/02 12:59, , 1F
a <- function(a,c,f,g){ ... } 才是對的.
03/02 12:59, 1F

03/02 13:00, , 2F
原function, 2, 3, 都是錯的.
03/02 13:00, 2F

03/02 13:02, , 3F
in.x 是 a function 的參數.
03/02 13:02, 3F

03/02 13:03, , 4F
如P x 是 double.it.and.add.y function 的參數.
03/02 13:03, 4F

03/02 13:03, , 5F
y 是相對於 double.it.and.add.y 全域變數. x 是區域
03/02 13:03, 5F

03/02 13:08, , 6F
assign("y", 3, frame=1)
03/02 13:08, 6F
感恩 請再追問 因為網頁上有載明說 要改寫成 y<-3 assign("y",y,frame=1) (卻沒有寫要改寫在哪裡 改寫成怎樣) 我的作法是把第二個function改成 function(x,y)然後 將上面那兩行放入第二個{}中 這樣也可以跑得出東西來 請問這樣跟assign("y",3,frame=1)的作用是ㄧ樣的嗎? 再次感謝~

03/02 14:12, , 7F
改成 y <<- 3
03/02 14:12, 7F

03/02 14:14, , 8F
不建議在 function 裡面包 function,過一段時間後會看無
03/02 14:14, 8F
感謝~~ ※ 編輯: cawaiilulu 來自: 174.101.220.112 (03/02 16:10)
文章代碼(AID): #1FK4i1EK (Statistics)