使用 sapply 将 R 中多个列表的列/变量转换为行名

  • 本文关键字:变量 转换 列表 sapply 使用 r
  • 更新时间 :
  • 英文 :


我正在尝试使用sapply将每个对象列表的列转换为行名。

tibble::column_to_rownames()不是一个选项,因为它"始终返回数据框"。

对于单个变量(类sfdata.frame(,使用base函数:

rownames(polygon_nyc_listings[[1]]) <- polygon_nyc_listings[[1]]$zipcode

它无需更改类即可完美运行:sfdata.frame

所以我试图为每个列表重复上面的功能,但没有成功:

test <- sapply(polygon_nyc_listings,
function(x){rownames(x) <- x$zipcode},
simplify = FALSE, USE.NAMES = TRUE)

相反,我得到了一个带有邮政编码列表类character的对象。

有人知道如何进行吗?

因为在 R 函数中返回最后一行或显式return()调用,因此匿名函数function(x) { rownames(x) <- x$zipcode }返回每个文档row.names的结果:

row.names返回字符向量。

这可以通过在行名更改后调用 x 来快速修复,如注释、function(x) { rownames(x) <- x$zipcode; x }function(x) { rownames(x) <- x$zipcode; return(x) }

但是,请考虑row.names<-(与嵌入赋值运算符的细微区别(:

function(x) { `rownames<-`(x, value= x$zipcode }

根据相同的文档:

row.names<-返回行名称已更改的数据框。

总而言之,删除多余的大括号{...}和默认USE.NAMES = TRUE

test_list <- sapply(polygon_nyc_listings, 
function(df) `row.names<-`(df, value = df$zipcode),
simplify = FALSE)

最新更新