iamstomach

  •  
  • 2013年8月4日
  • 注册于 2007年10月15日
  • 回复 第1楼 的 takky630:try() 忽视错误 继续运行

  • 回复 第3楼 的 1009:如果涉及预测,标准化也有缺陷,建模的指标是在现有数据基础上的标准化,如需要对进行标准化处理的X进行预测,这时的标准化就不容易实现了,得同时预测X的均值和标准差。线性模型中有时候标准化也是因为参数估计方法(比如OLS)的限制。做标准化处理,参考楼上说的,得结合三点:数据本身的含义和特征(是要反映绝对量变化还是相对位置),采用的分析方法或参数估计方法,具体应用(估计参数、预测、PCA之类的分析)

  • 回复 第5楼 的 nyyankee:

    “p=0.2, 在一次实验中事件发生的概率为0.2” 不等于 “做1000次实验发生200次的概率为0.2”

    问题一:已知p=0.2, 计算出1000次实验发生200次的概率为P(X=200)=0.0315

    问题二:p未知,1000次实验事件出现了200次(确定事件, 概率P=1,频率为0.2),参数估计出p(在一次实验中出现的概率)大致为频率0.2

    不能把“1000次实验出现200次的频率”等同于“1000次实验出现200次的概率”

  • 还有这个

    <br />
    for (i in 1:3) {<br />
      print("select i")<br />
    }<br />
    for (i in 1:3) {<br />
      print(paste("select", i))<br />
    }<br />
    


    这里还是print(),容易看出来,是要把循环变量放到引号外再用paste连接,如果是要批量生成命令,有时候都不知道是这里出的错误。
    </p>
  • 同搭船, try()函数

    上次在一份帖子里提过,这次再拿出来共享一下。

    <br />
    x <- list(10, 20, "a", "b", 30, 40)<br />
    z <- list(0)<br />
    y <- list(0)<br />
    for (i in 1:length(x)){<br />
      z[[i]] <- log(x[[i]])<br />
    }<br />
    z<br />
    # 提示错误,停止运行<br />
    # 错误于log(x[[i]]) : 数学函数中用了非数值参数<br />
    # > z<br />
    # [[1]]<br />
    # [1] 2.302585<br />
    #<br />
    # [[2]]<br />
    # [1] 2.995732<br />
    for (i in 1:length(x)){<br />
      y[[i]] <- try(log(x[[i]]), F)<br />
    }<br />
    y<br />
    # 提示错误,继续运行<br />
    # Error in log(x[[i]]) : 数学函数中用了非数值参数<br />
    # Error in log(x[[i]]) : 数学函数中用了非数值参数<br />
    # > y<br />
    # [[1]]<br />
    # [1] 2.302585<br />
    #<br />
    # [[2]]<br />
    # [1] 2.995732<br />
    #<br />
    # [[3]]<br />
    # [1] "Error in log(x[[i]]) : 数学函数中用了非数值参数\n"<br />
    # attr(,"class")<br />
    # [1] "try-error"<br />
    # attr(,"condition")<br />
    # <simpleError in log(x[[i]]): 数学函数中用了非数值参数><br />
    #<br />
    # [[4]]<br />
    # [1] "Error in log(x[[i]]) : 数学函数中用了非数值参数\n"<br />
    # attr(,"class")<br />
    # [1] "try-error"<br />
    # attr(,"condition")<br />
    # <simpleError in log(x[[i]]): 数学函数中用了非数值参数><br />
    #<br />
    # [[5]]<br />
    # [1] 3.401197<br />
    #<br />
    # [[6]]<br />
    # [1] 3.688879<br />
    
    </p>
  • 回复 第12楼 的 danny_liu:在合并前用as.data.frame稍微调整下格式。henji03@163.com

  • 回复 第9楼 的 danny_liu:我以前的笨方法是

    <br />
    url_all <- character(0)<br />
    for (){<br />
      url_all <- rbind(url_all, url_i)<br />
    }<br />
    


    这样可以依次叠加下来了
    </p>
  • 回复 第7楼 的 danny_liu:换个思路,试试看class()吧

    <br />
    i <- seq(1,10,1)<br />
    for(url_id  in 1:length(i)){<br />
      url_i <- paste("http://category.dangdang.com/all/?category_path=01.00.00.00.00.00&page_index=",url_id,sep = "")<br />
      url_value_i <- try(htmlParse(url_i,encoding="GBK"),F)<br />
      j=0<br />
      while (!mode(url_value_i) == "externalptr") {<br />
        url_value_i <- try(htmlParse(url_i,encoding="GBK"), F)<br />
        j = j+1<br />
        print(paste("redo", j))<br />
      }<br />
      print(url_i)<br />
    }<br />
    
    </p>
  • 不知道你说网络有问题会输出什么样的error。试试try()函数,try()函数也能让你抓网页的工作一直进行下去,而不在中途停止。

    <br />
    i <- seq(1,4,1)<br />
    for(url_id  in i){<br />
      url <- paste("http://category.dangdang.com/all/?category_path=01.00.00.00.00.00&page_index=",url_id,sep = "")<br />
      url_value <- try(htmlParse(url,encoding="GBK"), F)<br />
      while ( expr ){<br />
        url_value <- try(htmlParse(url,encoding="GBK"), F)<br />
      }<br />
    }<br />
    


    while条件能够实现你说的那个循环直到抓取出来为止,不过不知道你的error是啥样的,所以while语句的条件我用expr代替了。参考下面的例子:
    <br />
    x <- list(10, 20, "a", "b")<br />
    z <- list(0)<br />
    y <- list(0)<br />
    for (i in 1:length(x)){<br />
       z[[i]] <- log(x[[i]])<br />
    }<br />
    # 提示错误,停止运行<br />
    # 错误于log(x[[i]]) : 数学函数中用了非数值参数<br />
    for (i in 1:length(x)){<br />
      y[[i]] <- try(log(x[[i]]), F)<br />
      while (y[[i]][1] == "Error in log(x[[i]]) : 数学函数中用了非数值参数\n"){<br />
        y[[i]] = "Bingo"<br />
      }<br />
    }<br />
    # 提示错误,继续运行<br />
    # Error in log(x[[i]]) : 数学函数中用了非数值参数<br />
    # Error in log(x[[i]]) : 数学函数中用了非数值参数<br />
    z<br />
    # [[1]]<br />
    # [1] 2.302585<br />
    #<br />
    # [[2]]<br />
    # [1] 2.995732<br />
    y<br />
    # [[1]]<br />
    # [1] 2.302585<br />
    #<br />
    # [[2]]<br />
    # [1] 2.995732<br />
    #<br />
    # [[3]]<br />
    # [1] "Bingo"<br />
    #<br />
    # [[4]]<br />
    # [1] "Bingo"<br />
    
    </p>
  • 这个意思?方法比较笨,不过能实现

    <br />
    x <- seq(2, 100, 2)<br />
    y <- sort(x, decreasing = T)<br />
    y[1:(length(which(cumsum(y)/sum(y) < 0.9)) + 1)]<br />
    #  [1] 100  98  96  94  92  90  88  86  84  82  80  78  76  74  72  70  68  66  64  62  60  58<br />
    # [23]  56  54  52  50  48  46  44  42  40  38  36  34  32<br />
    
    </p>
  • 程序本身的思路没问题。循环语句有点混乱。是这个意思吧?

    <br />
    i <- seq(1,4,1)<br />
    for(url_id  in i){<br />
      url_i <- paste("http://category.dangdang.com/all/?category_path=01.00.00.00.00.00&page_index=",url_id,sep = "")<br />
      url_i <- htmlParse(url_i,encoding="GBK")<br />
      nodes_i <- getNodeSet(url_i,"//div[@class='listitem pic']//a[@href]")<br />
      Product_linkings_i <- sapply(nodes_i, function(x) xmlGetAttr(x, "href"))<br />
      Sys.sleep(3)<br />
      }<br />
    
    </p>
  • 不知道列表能不能as.data.frame()。试试write.csv(do.call(rbind, res), "res.csv")

  • 文理兼修。既能看问题,也能解决问题。
  • 回复 第4楼 的 Denes:如果note.i在rd里,用下面这段吧。参考:http://cos.name/cn/topic/108474

    <br />
    rd = read.table("fMRI.txt",header = T)<br />
    m = matrix(0,230,10)<br />
    i = 1<br />
    while(i <= 10){<br />
      m[,i] = fft(rd[paste("note", i, sep = ".")], inverse=TRUE)##作傅里叶变换<br />
      i = i+1<br />
    }<br />
    m<br />
    


    最好少用attach
    </p>
  • 回复 第1楼 的 ypchen:估计是在自动决定变量类型(字符或数值)时取前若干行的值来定义的问题,尝试了一下把前n行(n>=4)的“-”全改为0,则能正常导入,如果改为字符如“a,b,c,d,...”,则所有单元格都变成NA,怪了个哉。也没查到里面有什么参数设定可以控制。

    PS:我这里运行没有出现你那样的警告。

  • 回复 第1楼 的 Denes:要是note.i 都在数据框X中,直接用:

    <br />
    m[,i] = fft(X[paste("note", i, sep=".")], inverse=TRUE)<br />
    
    </p>
  • 回复 第1楼 的 Denes:试试

    <br />
    m[,i] = fft(get(paste("note", i, sep=".")), inverse=TRUE)<br />
    
    </p>
  • 回复 第7楼 的 king64:感觉是"NULL"惹的祸。暂时没查到给数据定义缺失值的方法。如果你的x9是从外部文件读入的话,定义下缺失值比较好。比如:

    <br />
    read.table("datafile",na.string = "NULL")<br />
    


    这样应该不会出现你说的问题了。
    </p>
  • 不知道是不是所有的程序包里程序都能实现。比如要查看lm()的代码,直接输入lm,回车即可。