【问题标题】:How to convert column data type for data frames in a list with lapply?如何使用 lapply 转换列表中数据框的列数据类型?
【发布时间】:2019-12-24 16:37:55
【问题描述】:

我有一个数据框列表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 &lt;- as.character(x$idCode) x

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

【问题讨论】:

  • alldata[] &lt;- lapply(allData, function(x) {x$idCode &lt;- as.character(x$idCode); x})
  • 我发现这是最简单可行的解决方案。为什么[]allData 之后呢?

标签: r list data-cleaning


【解决方案1】:

你有几个选择:

您可以只使用 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)
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2016-02-07
    相关资源
    最近更新 更多