全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2742 4
2011-12-05
想要用R画一个分段函数的函数曲线,怎么调试程序都通不过:
myfun <- function(x){
  y <- rep(NA, length.out=length(x))
  for(i in 1:length(x)){
    if(x<0) y <- -x
    if(x>=0 & x<=1) y <- (x)^2
    if(x>1) y <- 1
                               }
  return(y)
                                }
程序最后提示错误为:In readLines(file) : 读'myfun.R'时最后一行未遂

谢谢。
另外,后来发现,即使有上面的错误提示,这个函数是可以调用的,图也是可以画出来的,但是为什么会有这个警告信息呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-12-6 01:27:20
你的循环里面的 i 没有用到。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-12-6 01:32:57
函数可以这样写:

myfun <- function(x) {
    y <- x^2
    y[x > 1] <- 1
    y[x < 0] <- -x[x < 0]
    return(y)
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-1-1 14:13:03
Xie Xie for sharing,
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-1-1 18:55:00
lz这样的分段函数执行效率很低下,一旦样本量较大,循环较多计算起来就很慢;建议用这种不带循环的:
myfun = function(x){
  n=length(x);y=rep(0,n)
  l=which(x<0)
  c=which(abs(x-1/2)<=1/2)
  r=which(x>1)
  y[l]=-x[l]
  y[c]=x[c]^2
  y[r]=1
  return(y)
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群