将数据帧列表中的列结构转换为 R 中的字符

Convert structure of columns in list of dataframes to character in R

我正在创建一个空的数据框列表,稍后我将使用 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 不必不断附加文件,它的工作速度会更快。因此,我的下一步是执行映射函数,用字符数据填充此数据帧列表中的每个数据帧。

问题是,通过创建 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 只能有一个 class 而 data.frame 列可以是不同的类型)。最简单的选择是 repNA_character_n 次关联,以创建具有 n

的单个列 data.frame