如何根据R中的文件名搜索和提取值?

时间:2015-04-10 08:02:43

标签: r matrix

我有一个包含值的矩阵A。我有其他24个矩阵,其名称是:

the name of A1 is data-00.img , the name of A2 is data-01.img, the name of A3 is data-02.img.........the name of A24 is data-23.img

我想要做的是查看A中的第一个值,如果NA,返回NA但是如果有一个值例如12,则搜索其他矩阵的名称(应该是data-12.img)和然后提取相应的值并将其替换为A中的12值。最后,对A中的所有值执行相同操作。

感谢任何帮助!

 A = matrix( c(2, 4, 3, 1, 5, 7), nrow=2,ncol=3, byrow = TRUE) 

A1 = matrix( c(3, 6, 3, 1, 9, 7), nrow=2,ncol=3, byrow = TRUE) 
A2 = matrix( c(2, 3, 3, 1, 8, 3), nrow=2,ncol=3, byrow = TRUE) 
A3 = matrix( c(2, 9, 3, 1, 5, 7), nrow=2,ncol=3, byrow = TRUE) 
......
A24 = matrix( c(2,9, 3, 1, 7, 7), nrow=2,ncol=3, byrow = TRUE) 

上面我试图给出一个可重复的例子。

1 个答案:

答案 0 :(得分:2)

问题不是很清楚,我认为这就是你需要的:

#dummy data
A = matrix( c(2, 4, NA, 1, 5, 7), nrow=2,ncol=3, byrow = TRUE) 

A1 = matrix( c(1:6), nrow=2,ncol=3, byrow = TRUE) 
A2 = matrix( c(7:12), nrow=2,ncol=3, byrow = TRUE) 
A3 = matrix( c(13:18), nrow=2,ncol=3, byrow = TRUE) 
A4 = matrix( c(19:24), nrow=2,ncol=3, byrow = TRUE) 
A5 = matrix( c(25:30), nrow=2,ncol=3, byrow = TRUE) 
A6 = matrix( c(31:36), nrow=2,ncol=3, byrow = TRUE) 
A7 = matrix( c(37:42), nrow=2,ncol=3, byrow = TRUE) 

#result
matrix(sapply(seq_along(A),
              function(i){
                if(is.na(A[i])) NA else
                get(paste0("A",A[i]))[i]
              }),
       nrow=2)

#      [,1] [,2] [,3]
# [1,]    7   20   NA
# [2,]    4   29   42