web-dev-qa-db-fra.com

R: Comment enregistrer des listes dans CSV?

Donc, je travaille effectivement sur Twitter et j'ai besoin d'un moyen de stocker mes tweets dans un fichier CSV et de les extraire quand j'en ai besoin. Ceci est dû à l'idée que je veux compiler les tweets que je collectionne et les appliquer ensuite à mes algorithmes pour effectuer les calculs plus tard . 

            write.csv(tweets, file = "newfile", row.names = TRUE, sep = ',', col.names = TRUE)

qui ne fonctionne que si vous créez un cadre de données tho:/. Les tweets que je collectionne ressemblent à ceci 

 [[1]]
 [1] "anonymous: boring!"

 [[2]]
 [1] "anonymous: random message !"

..........

Des idées?

Edité: mon str (tweets) c'est juste 3 tweets que je viens de sortir

List of 3
 $ :Reference class 'status' [package "Twitter"] with 17 fields
  ..$ text         : chr "damn so many thing to settle @@"
  ..$ favorited    : logi FALSE
  ..$ favoriteCount: num 0
  ..$ replyToSN    : chr(0) 
  ..$ created      : POSIXct[1:1], format: "2013-10-11 14:15:59"
  ..$ truncated    : logi FALSE
  ..$ replyToSID   : chr(0) 
  ..$ id           : chr "388669309028798464"
  ..$ replyToUID   : chr(0) 
  ..$ statusSource : chr "web"
  ..$ screenName   : chr "ThisIsNapmi"
  ..$ retweetCount : num 0
  ..$ isRetweet    : logi FALSE
  ..$ retweeted    : logi FALSE
  ..$ longitude    : chr(0) 
  ..$ latitude     : chr(0) 
  ..$ urls         :'data.frame':   0 obs. of  4 variables:
  .. ..$ url         : chr(0) 
  .. ..$ expanded_url: chr(0) 
  .. ..$ dispaly_url : chr(0) 
  .. ..$ indices     : num(0) 
  ..and 50 methods, of which 38 are possibly relevant:
  ..  getCreated, getFavoriteCount, getFavorited, getId, getIsRetweet, getLatitude,
  ..  getLongitude, getReplyToSID, getReplyToSN, getReplyToUID, getRetweetCount, getRetweeted,
  ..  getRetweets, getScreenName, getStatusSource, getText, getTruncated, getUrls, initialize,
  ..  setCreated, setFavoriteCount, setFavorited, setId, setIsRetweet, setLatitude,
  ..  setLongitude, setReplyToSID, setReplyToSN, setReplyToUID, setRetweetCount, setRetweeted,
  ..  setScreenName, setStatusSource, setText, setTruncated, setUrls, toDataFrame,
  ..  toDataFrame#twitterObj
 $ :Reference class 'status' [package "Twitter"] with 17 fields
  ..$ text         : chr "@Neverush @asmafab http://t.co/TOakKW4kyc"
  ..$ favorited    : logi FALSE
  ..$ favoriteCount: num 0
  ..$ replyToSN    : chr "Neverush"
  ..$ created      : POSIXct[1:1], format: "2013-10-11 12:55:04"
  ..$ truncated    : logi FALSE
  ..$ replyToSID   : chr "388647414808051712"
  ..$ id           : chr "388648948111392770"
  ..$ replyToUID   : chr "44332730"
  ..$ statusSource : chr "web"
  ..$ screenName   : chr "ThisIsNapmi"
  ..$ retweetCount : num 0
  ..$ isRetweet    : logi FALSE
  ..$ retweeted    : logi FALSE
  ..$ longitude    : chr(0) 
  ..$ latitude     : chr(0) 
  ..$ urls         :'data.frame':   1 obs. of  5 variables:
  .. ..$ url         : chr "http://t.co/TOakKW4kyc"
  .. ..$ expanded_url: chr "http://www.youtube.com/watch?v=2mjvfnUAfyo"
  .. ..$ display_url : chr "youtube.com/watch?v=2mjvfn…""| __truncated__
  .. ..$ start_index : num 19
  .. ..$ stop_index  : num 41
  ..and 50 methods, of which 38 are possibly relevant:
  ..  getCreated, getFavoriteCount, getFavorited, getId, getIsRetweet, getLatitude,
  ..  getLongitude, getReplyToSID, getReplyToSN, getReplyToUID, getRetweetCount, getRetweeted,
  ..  getRetweets, getScreenName, getStatusSource, getText, getTruncated, getUrls, initialize,
  ..  setCreated, setFavoriteCount, setFavorited, setId, setIsRetweet, setLatitude,
  ..  setLongitude, setReplyToSID, setReplyToSN, setReplyToUID, setRetweetCount, setRetweeted,
  ..  setScreenName, setStatusSource, setText, setTruncated, setUrls, toDataFrame,
  ..  toDataFrame#twitterObj
 $ :Reference class 'status' [package "Twitter"] with 17 fields
  ..$ text         : chr "@Neverush @asmafab nasi lemak bumbung ? ahahahaha"
  ..$ favorited    : logi FALSE
  ..$ favoriteCount: num 0
  ..$ replyToSN    : chr "Neverush"
  ..$ created      : POSIXct[1:1], format: "2013-10-11 12:34:39"
  ..$ truncated    : logi FALSE
  ..$ replyToSID   : chr "388643321108631552"
  ..$ id           : chr "388643810613264384"
  ..$ replyToUID   : chr "44332730"
  ..$ statusSource : chr "web"
  ..$ screenName   : chr "ThisIsNapmi"
  ..$ retweetCount : num 0
  ..$ isRetweet    : logi FALSE
  ..$ retweeted    : logi FALSE
  ..$ longitude    : chr(0) 
  ..$ latitude     : chr(0) 
  ..$ urls         :'data.frame':   0 obs. of  4 variables:
  .. ..$ url         : chr(0) 
  .. ..$ expanded_url: chr(0) 
  .. ..$ dispaly_url : chr(0) 
  .. ..$ indices     : num(0) 
  ..and 50 methods, of which 38 are possibly relevant:
  ..  getCreated, getFavoriteCount, getFavorited, getId, getIsRetweet, getLatitude,
  ..  getLongitude, getReplyToSID, getReplyToSN, getReplyToUID, getRetweetCount, getRetweeted,
  ..  getRetweets, getScreenName, getStatusSource, getText, getTruncated, getUrls, initialize,
  ..  setCreated, setFavoriteCount, setFavorited, setId, setIsRetweet, setLatitude,
  ..  setLongitude, setReplyToSID, setReplyToSN, setReplyToUID, setRetweetCount, setRetweeted,
  ..  setScreenName, setStatusSource, setText, setTruncated, setUrls, toDataFrame,
  ..  toDataFrame#twitterObj
11
Napmi

Non testé, mais d'après ce que j'ai lu en ligne, il semble que ce qui suit devrait fonctionner: 

  1. Convertir la list en data.frame

    library(plyr) 
    tweets.df = ldply(tweets, function(t) t$toDataFrame())
    
  2. Utilisez write.csv comme auparavant, mais uniquement sur l'objet tweets.df au lieu de l'objet tweets.

    write.csv(tweets.df, file = "newfile.csv")
    

Sources: ici et ici . Voir aussi: ?"status-class".

8

Vous pouvez utiliser ce qui suit pour convertir des tweets en tweets dataframe:

tweets.df <- do.call("rbind", lapply(tweets, as.data.frame)) 

Ensuite, utilisez tweets.df dans votre fonction write.csv.

8
Ali Cirik

en utilisant le paquet Twitter:

convertir vos tweets en trame de données

tweets2df <- twListToDF(tweets)

puis enregistrez-le au format CSV

write.csv(tweets2df, file = "tweets.csv")
0
montxe