gpt4 book ai didi

r - 如何以紧凑的字符串表示形式返回 R tibble 的 col 类型?

转载 作者:行者123 更新时间:2023-12-01 14:29:02 27 4
gpt4 key购买 nike

例如,我有一个这样的 tibble。
测试 <- tibble(a = 10, b = "a")

有了这个输入,我想要一个可以返回代表 double 和字符的“dc”的函数。

我问这个的原因是我想读很多文件。我不想让 read_table 函数来决定每列的类型。我可以手动指定字符串,但由于我要导入的实际数据有 50 列,因此手动操作非常困难。

谢谢。

最佳答案

而前面提到的test %>% summarise_all(class)将以长格式为您提供列的类名,而在此问题中,您将它们转换为对 read_table 有意义的单字符代码。 col_types .要将类名映射到单字母代码,您可以使用查找表,这是一个(不完整的)示例,带有 dput :

structure(list(col_type = c("character", "integer", "numeric", 
"double", "logical"), code = c("c", "i", "n", "d", "l")), .Names = c("col_type",
"code"), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-5L))

现在使用这张表,我将其命名为 types ,我们最终可以在单个字符串中转换列类型:
library(dplyr)
library(tidyr)
library(stringr)

test %>%
summarise_all(class) %>%
gather(col_name, col_type) %>%
left_join(types) %>%
summarise(col_types = str_c(code, collapse = "")) %>%
unlist(use.names = FALSE)

这将获取每列的类 ( summarise_all ),然后将它们收集到一个匹配列名称与列类型 ( gather ) 的小标题中。 left_join匹配 col_type column 并为每个列名称提供简短的 1-char 代码。现在我们不对列名做任何事情,所以只需连接 summarise 就可以了。和 str_c .最后 unlist把绳子从小东西里拉出来。

关于r - 如何以紧凑的字符串表示形式返回 R tibble 的 col 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44580837/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com