【问题标题】:Convert structure of columns in list of dataframes to character in R将数据框列表中的列结构转换为 R 中的字符
【发布时间】:2021-06-15 05:29:13
【问题描述】:

我正在创建一个空的数据框列表,稍后我将使用 lapply 追加。

library(tidyverse)
library(dplyr)
library(purrr)

my.list <- lapply(1:192, function(x, nr = 468, nc = 1) {   data.frame(symbol = matrix(nrow=nr, ncol=nc)) })
str(my.list)

如果您获得 my.list 的结构,您会注意到每个数据框中的列结构是“逻辑的”。我希望每个数据框中的列结构是字符而不是逻辑。

我可以在上面的 lapply 函数中更改任何内容,以便生成的数据框列表中的列是字符吗?或者我将如何最好地完成这项任务?我正在创建这个空的数据框列表,因为我知道如果 R 不必不断附加文件,它的工作速度会更快。因此,我的下一步是执行一个映射函数,用字符数据填充此数据帧列表中的每个数据帧。

【问题讨论】:

    标签: r lapply


    【解决方案1】:

    问题是通过创建NA,默认情况下它是NA_logical_。如果我们想创建一个字符列,使用NA_character_。在这里,我们可以修复

    my.list <- lapply(my.list, function(x) {x[] <- lapply(x, as.character); x})
    

    或者在创建data.frame 列时,使用

    my.list <- lapply(1:192, function(x) data.frame(symbol = rep(NA_character_, 468)))
    

    获取单个列 data.framematrix 路由并不理想,有时也不正确(因为 matrix 只能有一个类,而 data.frame 列可以是不同的类型)。最简单的选择是 replicate NA_character_n 次以创建单个列 data.framen

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 2021-10-17
      相关资源
      最近更新 更多