我需要通过选择原始矩阵的备用列来构建新的矩阵

时间:2017-01-20 09:41:00

标签: r select matrix lapply cbind

我有一个矩阵,其中第一列是样本的ID,第2列到第15列是观察到的14种鱼类的存在,第16到29列是相同14种物种的预测存在。

我需要构建14个矩阵(每个物种1个),每个3列:第一列=样本的ID(例如原始矩阵的第1列),第2列=观察到物种的存在,第3列=预测存在该物种。

让我们说A是我的样本的ID:

A<-c(1,2,3,4,5,6,7,8,9,10)

B是我物种的观察值

B<-replicate(14,rnorm(10))

C是我物种的预测值

C<-replicate(14,rnorm(10))

所以我有矩阵&#34;数据&#34;:

data<-cbind(A, B, C)

我想做这样的事情

A1<-cbind(data[,1],data[,2],data[,16]) A2<-cbind(data[,1],data[,3],data[,17])

等..直到A1到A14矩阵,每个物种一个。我怀疑我需要使用lapply函数,但我迷路了。任何人都可以帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我们可以使用lapply通过循环列序列来创建list matrices

lst <- lapply(seq_len(ncol(B)), function(i) cbind(A, B= B[,i], C=C[,i]))
names(lst) <- paste0("A", seq_along(lst))

最好将其保留在list中,而不是在全局环境中创建多个对象。但是,如果我们还需要它

list2env(lst, .GlobalEnv)