首页 > 解决方案 > 如何使用 lapply 转换列表中数据框的列数据类型?

问题描述

我有一个数据框列表allData。每个数据框都有一个名为 的列idCode。如何idCode使用 lapply (或其他功能,如果可能)将类型更改为字符?

我已经尝试过了,但它只返回了所有“idCode”列的列表。allData原始列表中没有任何变化。

lapply(allData, function(x) x$idCode <- as.character(x$idCode))

我也试过这个:

lapply(allData, function(x) {x$idCode <- as.character(x$idCode) x})

希望它会返回所有idCode转换后的数据帧,所以我可以在一个新列表中再次将它们“缝合”在一起。但是,它给了我一个错误:unexpected symbol in "lapply(allData, function(x) {x$idCode <- as.character(x$idCode) x.

有可能做到这一点lapply()吗?或者其他一些功能也可以。

标签: rlistdata-cleaning

解决方案


您在这里有几个选择:

您可以只使用 for 循环并使用例如as.character()操作每个数据帧

for(i in 1:length(allData)){
      allData[[i]]$idCode<-as.character(allData[[i]]$idCode)
}

或者你使用全局变量赋值'<<-'

lapply(X = 1:length(allData),FUN = function(x){
      allData[[x]]$idCode<<-as.character(allData[[x]]$idCode)
      return(NULL)
})

为了更改数据框中列的类型,您还可以使用函数class()

lapply(X = 1:length(allData),FUN = function(x){
      class(allData[[x]]$idCode)<<-"character"
      return(NULL)
})

推荐阅读