2013-02-12 6 views
2

Je dois convertir toutes les lignes d'une image en chaînes.R convertir toutes les lignes en chaînes

Voici un exemple de données:

1.12331,4.331123,4.12335435,1,"asd" 
1.123453345,5.654456,4.889999,1.45456,"qwe" 
2.00098,5.5445,4.768799,1.999999,"ttre" 

Je lis ces données dans R, a obtenu un dataframe.

td<-read.table("test.csv", sep=',') 

Quand je lance apply(td, 2, as.character) sur ces données, je suis

V1  V2  V3  V4  V5  
[1,] "1.1233" "4.3311" "4.1234" "1.0000" "asd" 
[2,] "1.1235" "5.6545" "4.8900" "1.4546" "qwe" 
[3,] "2.0010" "5.5445" "4.7688" "2.0000" "ttre" 

Mais quand je fais la même chose que sur les colonnes numériques, je suis le résultat différent:

apply(td[,1:4], 2, as.character) 

    V1   V2   V3   V4   
[1,] "1.12331"  "4.331123" "4.12335435" "1"  
[2,] "1.123453345" "5.654456" "4.889999" "1.45456" 
[3,] "2.00098"  "5.5445" "4.768799" "1.999999" 

En résultat J'ai besoin d'une base de données avec des valeurs exactement les mêmes que dans le fichier source. Qu'est-ce que je fais mal?

+0

Comme les autres réponses suggèrent, la lecture dans vos données dans le format correct pour commencer est la méthode recommandée pour faire face à cela, mais pour ce que ça vaut, 'data.frame (lapply (td, as.character), stringsAsFactors = FALSE) 'devrait également fonctionner. – A5C1D2H2I1M1N2O1R2T1

Répondre

3

Vous pouvez définir colClasses à read.table() pour faire toutes les colonnes character.

td <- read.table("test.csv", sep=',',colClasses="character") 
td 
      V1  V2   V3  V4 V5 
1  1.12331 4.331123 4.12335435  1 asd 
2 1.123453345 5.654456 4.889999 1.45456 qwe 
3  2.00098 5.5445 4.768799 1.999999 ttre 

str(td) 
'data.frame': 3 obs. of 5 variables: 
$ V1: chr "1.12331" "1.123453345" "2.00098" 
$ V2: chr "4.331123" "5.654456" "5.5445" 
$ V3: chr "4.12335435" "4.889999" "4.768799" 
$ V4: chr "1" "1.45456" "1.999999" 
$ V5: chr "asd" "qwe" "ttre" 
2

La meilleure façon de faire est de lire les données en tant que caractère en premier lieu. Vous pouvez le faire avec l'argument colClasses à read.table:

td <- read.table("test.csv", sep=',', colClasses="character") 
Questions connexes