Archives de
Mois : janvier 2013

Convertir un tableau R vers Javascript

Convertir un tableau R vers Javascript

Pour un petit projet sur lequel je travaille, j’ai eu besoin de passer des données d’un dataframe de R vers Javascript. Les données en Javascript peuvent être chargées au format JSON que R exporte avec le package RJSON. Mais pour ce projet particulier, dans un souci de simplicité et parce que je débute en Javascript, je voulais importer mes données dans le format traditionnel des arrays de Javascript.

Un array en JS ça marche comme ça :

var montableau = [1, 2, 3, 4];

Ce qui équivaut grosso modo à un vecteur sous R :

montableau <- c(1, 2, 3, 4)

On peut aussi faire de la pseudo-2D :

var montableau = [[1, 2], [3, 4]];

Ce qui donnerai une matrice sous R :

montableau <- matrix(c(1, 2, 3, 4), ncol=2, byrow=TRUE)

Bref voici une petite fonction R pour passer un dataframe (ou un truc ressemblant) de R vers Javascipt :

toJSarray <- function(df){

  if (!is.data.frame(df)){
    df <- as.data.frame(df)
  }
  
  df.nbli <- dim(df)[1]
  df.nbco <- dim(df)[2]
  temp <- vector()
  a.1 <- vector()
  
  for (i in 1:df.nbli){
      for (j in 1:df.nbco){
          if (is.numeric(df[,j])){
            a.1[j] <- df[i,j]
          } else {
            a.1[j] <- paste("\"", df[i,j], "\"", sep="")   
          }
      }
      a.2 <- paste(a.1, collapse=", ")
      temp[i] <- paste ("[", a.2, "]", sep="")
  }
  
  temp.2 <- paste(temp, collapse=", ")
  if (df.nbli == 1){
    jsarr <- temp.2
  } else {
    jsarr <- paste ("[", temp.2, "]", sep="")
  }
  invisible(jsarr)
}

Après quoi on peut rapidement écrire un fichier JS contenant nos données.

write(paste("var montableau = ", toJSarray(mondf), sep=""), "monfichier.js")

Facebooktwitter
POC devient POK

POC devient POK

La première des bonnes résolutions qui vient à l’esprit d’un bloggeur à l’aube d’une nouvelle année c’est surement d’écrire plus d’article. Mais je sais que je ne pourrai jamais tenir une telle promesse car les mois à venir vont être bien chargés.

Pour me mettre un peu de pression je vient de faire l’acquisition du nom de domaine pieceofk.fr et j’ai mis à jour le header dans la foulée. En avant pour 2013 !

Facebooktwitter