Modification d'une réponse vieille de 7 ans : Maintenant, c'est beaucoup plus simple grâce à la text=
qui a été ajouté à read.csv()
et similaires :
R> data <- read.csv(text="flim,flam
+ 1.2,2.2
+ 77.1,3.14")
R> data
flim flam
1 1.2 2.20
2 77.1 3.14
R>
Oui, regardez l'aide pour textConnection()
-- le très puissant La notion de R est qu'essentiellement tous les lecteurs (comme par ex. read.table()
et ses variantes) accèdent à ces connexion qui peut être un fichier, une URL distante, un tube provenant d'une autre application, ou ... un texte comme dans votre cas.
La même astuce est utilisée pour les documents dits "ici" :
> lines <- "
+ flim,flam
+ 1.2,2.2
+ 77.1,3.14
+ "
> con <- textConnection(lines)
> data <- read.csv(con)
> close(con)
> data
flim flam
1 1.2 2.20
2 77.1 3.14
>
Notez qu'il s'agit d'un simple pour construire quelque chose, mais c'est aussi coûteux en raison de l'analyse répétée de toutes les données. Il existe d'autres moyens de passer de Java à R, mais cela devrait vous permettre de vous lancer rapidement. L'efficacité vient ensuite...
0 votes
Pourriez-vous utiliser le paquet rJava à la place ?
0 votes
Vous pourriez peut-être jouer avec allowEscapes (dans read.table). Assurez-vous simplement que la sortie java utilise \n pour casser les lignes.
0 votes
@Joshua J'utilise rJava pour parler à mon programme Java. Je pense qu'il est plus efficace de convertir mes objets Java lourds en chaînes de caractères avant de les transmettre à R.
0 votes
Tommy, qu'est-ce qui te fait penser que la sérialisation manuelle est plus efficace que ce que Simon a mis dans rJava ? Avez-vous fait des tests de référence ?
1 votes
Peut-être qu'efficace n'est pas le bon mot. Mon entrée est un tableau d'objets de type hashmap et ma sortie est un data.frame R. Je n'ai rien vu dans rJava qui me permette de représenter un objet java sous la forme d'un data.frame. Je formate donc mes objets en une chaîne de caractères, puis je la convertis en un data.frame R. Toute suggestion plus efficace pour traiter ce problème serait appréciée.