作者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)