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)
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)
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