我想在每个重复序列之后使用此代码保留数据框的名称。结果列表(list2)中所有我的数据框名称都消失了。我该如何改善?谢谢。
list2<-lapply(seq_along(list1), function(i, USE.NAMES=T){
matrix_a%*%list1[[i]]
})
答案 0 :(得分:2)
请勿使用seq_along
遍历列表,请直接执行。
lapply(list1, function(x) matrix_a %*% x)
lapply
使用传递给它的对象的名称。
假设您的list1
类似于
list1 <- list(x = structure(c(1L, 0L, 0L, 0L, 0L, 2L, 0L, 0L, 0L, 0L,
3L, 0L, 0L, 0L, 0L, 4L), .Dim = c(4L, 4L)), y = structure(c(1L,
0L, 0L, 0L, 0L, 2L, 0L, 0L, 0L, 0L, 3L, 0L, 0L, 0L, 0L, 4L), .Dim = c(4L, 4L)))
list1
的名字
names(list1)
#[1] "x" "y"
但seq_along(list1)
没有名称。
names(seq_along(list1))
#NULL
因此,lapply
的最终输出中没有名称。
如果由于某种原因必须通过索引,则可以稍后添加名称
setNames(lapply(seq_along(list1), function(i) matrix_a%*%list1[[i]]), names(list1))
答案 1 :(得分:1)
我们也可以使用Map
Map(`%*%`, list(matrix_a), list1)