回复 第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()函数
上次在一份帖子里提过,这次再拿出来共享一下。
</p><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 />
回复 第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()吧
</p><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 />
不知道你说网络有问题会输出什么样的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代替了。参考下面的例子:
</p><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 />
不知道列表能不能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中,直接用:
</p><br /> m[,i] = fft(X[paste("note", i, sep=".")], inverse=TRUE)<br />
回复 第1楼 的 Denes:试试
</p><br /> m[,i] = fft(get(paste("note", i, sep=".")), inverse=TRUE)<br />
回复 第7楼 的 king64:感觉是"NULL"惹的祸。暂时没查到给数据定义缺失值的方法。如果你的x9是从外部文件读入的话,定义下缺失值比较好。比如:
<br /> read.table("datafile",na.string = "NULL")<br />
这样应该不会出现你说的问题了。
</p>
不知道是不是所有的程序包里程序都能实现。比如要查看lm()的代码,直接输入lm,回车即可。