R:根据值自动转换列类型

Mih*_*iha 1 r type-conversion dataframe tibble

我有很多专栏文章。我不想一一更改。比方说,tible看起来像这样:

df <- tibble(
  x = c(1,0,1,1,'a'), 
  y = c('A', 'B', 1, 'D', 'A'), 
  z = c(1/3, 4, 5/7, 100, 3)
)
Run Code Online (Sandbox Code Playgroud)

我想根据其他标题中的值转换其列类型:

df_map <- tibble(
  col = c('x','y','z'), 
  col_type = c('integer', 'string', 'float')
)
Run Code Online (Sandbox Code Playgroud)

什么是最合适的解决方案?

shs*_*shs 5

请尝试以下操作:

library(purrr)
map2_dfc(df, df_map$col_type, type.convert, as.is = T)
Run Code Online (Sandbox Code Playgroud)

这段代码假定它df_map$col的顺序names(df)与之相同(感谢@Moody_Mudskipper指出了这一点)。

正如@NelsonGon指出的那样,R中合适的数据类型是“整数”,“字符”和“双精度”。

根据注释中的要求进行编辑以包含布尔变量的先前修改:

library(purrr)
map2_dfc(df, df_map$col_type, type.convert, as.is = T)
Run Code Online (Sandbox Code Playgroud)