【问题标题】:I need to build new matrices by selecting alternate columns of the original matrix我需要通过选择原始矩阵的备用列来构建新矩阵
【发布时间】:2017-06-05 06:00:07
【问题描述】:

我有一个矩阵,其中第一列是样本的 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<-cbind(A, B, C)

我想做这样的事情

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

等..直到有 A1 到 A14 矩阵,每个物种一个。我怀疑我需要使用 lapply 功能,但我迷路了。谁能帮帮我?

谢谢!!

【问题讨论】:

    标签: r select matrix lapply cbind


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      相关资源
      最近更新 更多