我有一个列表,其中包含几个具有相同行数(4)的矩阵。现在我想应用像 log2(row/something) 这样的函数来表示第 1 行和第 4 行,以及像 log2(row/something else) 这样的函数来表示第 2 行和第 3 行。
在代码中:
# Create list with 2 matrices with 4 rows
l<-list(a=matrix(1:16,nrow=4),b=matrix(17:32,nrow=4))
# Now I thought it might be possible to
nl <- lapply(l, function(x){
log2(x[c(1,4),]/14)
log2(x[2:3,]/23)
})
但结果是只lapply
执行了中的最后一个函数。我还认为有可能:
nl <- l
lapply(nl, function(x) x[c(1,4),]) <- lapply(l, function(x) log2(x[c(1,4),]/14))
lapply(nl, function(x) x[2:3,]) <- lapply(l, function(x) log2(x[2:3,]/23))
但 R 真的不喜欢这种创造性的解决方案。