我有以下代码:
supply = vector(length = 64, mode = 'list')
for (i in 1:64) {
supply[[i]] = df3[rownames(df6),]*df6[,i]
names(supply) <- sheetnames
df3和df6都有行名,用于匹配上的64个新表。在这些新表中,行名消失(列名仍然存在(。如何获取结果中的行名?我需要将它们导出到Excel,包括在for循环中匹配的行名。
**编辑
我尝试了以下几种:
supply = vector(length = 64, mode = 'list')
for (i in 1:64) {
supply[[i]] = df3[rownames(df6),]*df6[,i]
row.names(supply[[i]]) = row.names(df6)}
但不起作用
您可以试试这个。它应该准确地返回您要查找的内容,但rowname是列的情况除外。
# get initial columnnames
colnames3 <- names(df3)
colnames6 <- names(df6)
# set rownames as a column names "rowname"
df3 <- tibble::rownames_to_column(df3)
df6 <- tibble::rownames_to_column(df6)
# join by rowname
df3 <- dplyr::inner_join(df3, df6, by = "rowname")
# define the columns you need
out <- df3[c("rowname", colnames3)]
# your loop!
supply <- lapply(colnames6, function(col){
out[colnames3] <- df3[colnames3] * df3[,col]
out
})
没有一个可复制的例子很难帮助你更多。
lapply
返回一个列表,因此之前不需要初始化supply
,也不需要for循环。