从字符串的data.frame猜测正确的列存储模式

dig*_*aps 4 r

给定一个data.frame只包含字符串的列(没有因子),其中一些应保留字符串,其中一些是整数,其中一些是双精度,我怎么能猜出转换字符串最合适的存储模式?

fixDf <- data.frame(isChar=c("A", "B", "C"), 
  isDouble=c("0.01", "0.02", "0.03"), 
  isInteger=c("1", "2", "3"), stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种简单的方法可以确定需要完成以下操作,然后执行此操作:

mode(fixDf[, "isDouble"]) <- "double"
mode(fixDf[, "isInteger"]) <- "integer"
Run Code Online (Sandbox Code Playgroud)

理想情况下,遇到错误时,处理此错误的函数会使数据保持字符串形式.

Jus*_*tin 9

您可以使用colwise从plyr包和type.convert功能.

library(plyr)
foo = colwise(type.convert)(fixDf)

str(foo)


'data.frame':   3 obs. of  3 variables:
 $ isChar   : Factor w/ 3 levels "A","B","C": 1 2 3
 $ isDouble : num  0.01 0.02 0.03
 $ isInteger: int  1 2 3
Run Code Online (Sandbox Code Playgroud)

或者使用基数R:

as.data.frame(lapply(fixDf, type.convert))
Run Code Online (Sandbox Code Playgroud)


qwr*_*qwr 7

type_convertfrom readr正是您想要的,对整个数据帧进行操作。它可以很好地处理逻辑、数字(整数和双精度)、字符串和日期/时间,而无需强制因子。

type_convert(fixDf)
Run Code Online (Sandbox Code Playgroud)

要单独解析列,请使用parse_guess.