将数据帧列表中的列结构转换为 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.frame
的 matrix
路径并不理想,有时是不正确的(因为 matrix
只能有一个 class 而 data.frame
列可以是不同的类型)。最简单的选择是 rep
将 NA_character_
与 n
次关联,以创建具有 n
行
的单个列 data.frame
我正在创建一个空的数据框列表,稍后我将使用 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.frame
的 matrix
路径并不理想,有时是不正确的(因为 matrix
只能有一个 class 而 data.frame
列可以是不同的类型)。最简单的选择是 rep
将 NA_character_
与 n
次关联,以创建具有 n
行
data.frame