我需要通过选择原始矩阵的交替列来构建新矩阵
I need to build new matrices by selecting alternate columns of the original matrix
我有一个矩阵,其中第一列是样本的 ID,第 2 列到第 15 列是观察到的 14 种鱼类,第 16 到 29 列是这 14 种鱼类的预测存在。
我需要构建 14 个矩阵(每个物种 1 个),每个矩阵有 3 列:第一列 = 样本的 ID(例如原始矩阵的第 1 列),第二列 = 观察到的物种存在,第三列 =预测该物种的存在。
假设 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))
所以我有矩阵 "data":
data<-cbind(A, B, C)
我想做这样的事情
A1<-cbind(data[,1],data[,2],data[,16])
A2<-cbind(data[,1],data[,3],data[,17])
等等,直到有 A1 到 A14 矩阵,每个物种一个。我怀疑我需要使用 lapply 函数,但我迷路了。谁能帮帮我?
谢谢!!
我们可以使用 lapply
通过遍历列序列
创建 matrices
的 list
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)
我有一个矩阵,其中第一列是样本的 ID,第 2 列到第 15 列是观察到的 14 种鱼类,第 16 到 29 列是这 14 种鱼类的预测存在。
我需要构建 14 个矩阵(每个物种 1 个),每个矩阵有 3 列:第一列 = 样本的 ID(例如原始矩阵的第 1 列),第二列 = 观察到的物种存在,第三列 =预测该物种的存在。
假设 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))
所以我有矩阵 "data":
data<-cbind(A, B, C)
我想做这样的事情
A1<-cbind(data[,1],data[,2],data[,16])
A2<-cbind(data[,1],data[,3],data[,17])
等等,直到有 A1 到 A14 矩阵,每个物种一个。我怀疑我需要使用 lapply 函数,但我迷路了。谁能帮帮我?
谢谢!!
我们可以使用 lapply
通过遍历列序列
matrices
的 list
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)