我有一个矩阵,其中第一列是样本的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函数,但我迷路了。任何人都可以帮助我吗?
谢谢!
答案 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)