web-dev-qa-db-fra.com

Limiter le nombre de décimales dans une image (R)

J'aimerais limiter le nombre de décimales lorsqu'un cadre de données est importé. Mon entrée .txt a 16 décimales pour chaque ligne de la colonne "Valeur". Mon dataframe ressemble à ça:

Value 

0.202021561664556
0.202021561664556
0.202021561664556
0.202021561664556
...

Mon cadre de données attendu

Value
0.20202156
0.20202156
0.20202156
0.20202156
...

Entrée réelle (DF) qui ne fonctionne pas:

DF <- "NE001358.Log.R.Ratio
    -0.0970369274475688
    0.131893549586039
    0.0629266495860389
    0.299559132381831
    -0.0128804337656807
    0.0639743960526874
    0.0271669351886552
    0.322395363972391
    0.179591292893632"

DF <- read.table(text=DF, header = TRUE)
8
user3091668

Ici, is.num est TRUE pour les colonnes numériques et FALSE sinon. Nous appliquons ensuite round aux colonnes numériques:

is.num <- sapply(DF, is.numeric)
DF[is.num] <- lapply(DF[is.num], round, 8)

Si ce que vous vouliez dire n'était pas que vous deviez modifier le bloc de données, mais simplement que vous vouliez afficher le bloc de données à 8 chiffres, alors c'est simplement:

print(DF, digits = 8)
13
G. Grothendieck

il suffit de jeter une copie de cela dans le chemin de votre projet dans un répertoire utils et de le rechercher à la source lorsque vous exécutez votre script.

"formatColumns" <-
 function(data, digits)
 {
    "%,%" <- function(x,y)paste(x,y,sep="")
    nms <- names(data)
    nc <- ncol(data)
    nd <- length(digits)
    if(nc!=nd) 
      stop("Argument 'digits' must be vector of length " %,% 
           nc %,% ", the number of columns in 'data'.")
    out <- as.data.frame(sapply(1:nc, 
                         FUN=function(x, d, Y)
                         format(Y[,x], digits=d[x]), Y=tbl, d=digits))
    if(!is.null(nms)) names(out) <- nms
    out
}

Maintenant, vous pouvez vous asseoir et vous détendre

formatColumns(MyData, digits=c(0,2,4,4,4,0,0))

et cetera et cetera et cetera

0
user41990