作者arbiteron (..)
站内Statistics
标题Re: [程式] R 资料处理问题
时间Sat Mar 16 23:08:38 2013
提供另外一种想法
把资料截短并补0,堆成矩阵後再加总
data <- seq(1:10)
n <- 3
x <- data
for(i in 1:(n-1)){
x <- rbind(x, c(rep(0,i),data[-((length(data)-i+1):length(data))]))
}
apply(x, 2, sum)
※ 引述《andrew43 (apan)》之铭言:
: 这是改写过的 r code, 内容是在回圈内只要 sum(data[(i-2):i]) 不合法则改成
: sum(data[(i-2+j):i]), 其中 j = {0,1,2,...}.
: 请参考看看.
: R 的例外处理我不是很在行,
: 但你的这个问题是很典型的例外处理.
: data <- seq(1:10)
: new.data <- c()
: for(i in 1:10){
: j <- 0
: expr <- expression(sum(data[(i-2+j):i])) #建立表达式 ("2"可以自己调)
: a.try <- try(eval(expr), T) #建立表达式的例外
: while("try-error" %in% class(a.try)) { #若有例外
: j <- j + 1
: a.try <- try(eval(expr), T)
: cat(sprintf("Error happened when i=%g and j=%g\n", i, j)) #显示例外之处
: }
: new.data[i] <- a.try
: }
: new.data
: ※ 引述《windguide (夜很深)》之铭言:
: : [软体程式类别]:
: : R
: : [程式问题]:
: : 资料处理、回归、叙述统计、logistic、probit...等
: : [软体熟悉度]:
: : 低(1~3个月)
: : [问题叙述]:
: : 各位好,我现在有一笔资料,想从这笔资料中产生新资料
: : 例如 这笔资料是 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
: : 新资料是前两个资料点的加上本身共三个数字的和,以上述例子也就是,
: : 1, 3, 6, 9, 12, 15, 18, 21, 24, 27
: : 由於第一个资料点没有前面的资料所以维持为1,第二个资料点是1+2=3
: : 我想利用资料向量及for回圈处理
: : data=seq(1:10)
: : new.data=c()
: : for(i in 1:10){
: : new.data[i] = sum(data[(i-2):i])
: : }
: : new.data
: : 但是当data[-1] 的时候会出现问题 它给的值不是0
: : 请问有甚麽办法可以解决吗,感谢各位
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.114.179.32