替换具有相同结构的矩阵列表中的某些元素

时间:2016-02-23 17:00:39

标签: r list matrix

我有几个矩阵的列表,它们都具有相同的11 * 19结构,但它们的值不同。在每个矩阵中,我想用" NA"来替换某些元素中的值 它适用于单个矩阵:

m1<-matrix(seq(1:209),11,19)

m1[1,1:19]<-NA
m1[11,1:19]<-NA
m1[1:11,1]<-NA
m1[1:11,19]<-NA
m1[2,1:5]<-NA
m1[2,15:19]<-NA
m1[10,1:5]<-NA
m1[10,15:19]<-NA
m1[3,1:4]<-NA
m1[3,16:19]<-NA
m1[9,1:4]<-NA
m1[9,16:19]<-NA
m1[4,1:3]<-NA
m1[4,17:19]<-NA
m1[8,1:3]<-NA
m1[8,17:19]<-NA
m1[5,1:2]<-NA
m1[5,18:19]<-NA
m1[7,1:2]<-NA
m1[7,18:19]<-NA

如果我想对矩阵列表执行此操作,它就不再起作用了:

m2<-matrix(seq(209,1,by=-1),11,19)
m3<-matrix(seq(210,418,by=1),11,19)
m_list<-list(m1,m2,m3)

m_list[1,1:19]<-NA
m_list[11,1:19]<-NA
m_list[1:11,1]<-NA
m_list[1:11,19]<-NA
m_list[2,1:5]<-NA
m_list[2,15:19]<-NA
m_list[10,1:5]<-NA
m_list[10,15:19]<-NA
m_list[3,1:4]<-NA
m_list[3,16:19]<-NA
m_list[9,1:4]<-NA
m_list[9,16:19]<-NA
m_list[4,1:3]<-NA
m_list[4,17:19]<-NA
m_list[8,1:3]<-NA
m_list[8,17:19]<-NA
m_list[5,1:2]<-NA
m_list[5,18:19]<-NA
m_list[7,1:2]<-NA
m_list[7,18:19]<-NA

申请或相关职能是否可行?

1 个答案:

答案 0 :(得分:1)

使用list,我们可以使用lapply

lapply(m_list, function(x) {x[1, 1:19] <- NA
                            x[11, 1:19] <- NA 
                            x
             })

注意:我们可以使用OP代码中显示的大部分作业。