循环通过列对并加载到数组

时间:2014-05-19 12:49:39

标签: r

我有一个数据框:包含表示X,Y值的列对的数据。

我需要将对转换为单个矩阵。另一种思维方式是说第二步循环列。

这是我正在使用的代码:

for (set in  1:4){
    data[set] <-cbind(data[, set], data[,set+1])  
}

但我收到错误:

Error in `[.data.frame`(data, , set + 1) : undefined columns selected

另外,我事先不知道1:4的范围,有没有办法可以得到最后一列的计数,即data.width?

稍后我需要将每个单独的矩阵传递给一个函数。

有不同的方法吗?

2 个答案:

答案 0 :(得分:1)

试试这个例子:

#dummy data
x <- matrix(1:24,ncol=8)

#dummy function
myfunc<-function(x,y)x+y

#use myfunc per 2 columns
sapply(seq(1,ncol(x)-2,2),
       function(i)myfunc(x[,i],x[,i+1]))

修改

#dummy data
x <- matrix(1:24,ncol=8)

#dummy plot function
myfunc<-function(x,y){
  plot(x,y,
       xlim=c(min(x),max(x)),
       ylim=c(min(y),max(y)))
}

#use myfunc per 2 columns
sapply(seq(1,ncol(x)-2,2),
       function(i)myfunc(x[,i],x[,i+1]))

答案 1 :(得分:0)

我用它排序:

width <- ncol(data) -2

for (set in  1:width){

x < - set
y <- set +1 


data[set] <-cbind(data[, x], data[,y])

}