r-在for循环期间丢失行名



我有以下代码:

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循环。

相关内容

  • 没有找到相关文章

最新更新