【问题标题】:R: How to save lists into csv?R:如何将列表保存到 csv 中?
【发布时间】:2013-10-20 06:57:28
【问题描述】:

所以我实际上在 twitteR 上工作,我需要一种方法将我的推文存储到 csv 文件中,并在需要时将其取出。这是因为我想编译我收集的推文,然后将它们应用于我的算法以便稍后进行计算。 所以,我想试试

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

仅在创建数据框 :/ 时才有效。 我收集的推文是这样的

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

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

.... ......

有什么想法吗?

已编辑:我的 str(tweets) 这只是我刚刚提取的 3 条推文

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

【问题讨论】:

  • 为什么必须是 CSV 文件?为什么不只是像writeLines(unlist(tweets), "newfile.txt") 这样的东西?
  • @Ananda Mahto 刚刚尝试使用该方法,这就是我得到的错误 writeLines(unlist(tweets), "newfile.txt") : invalid 'text' argument 不太确定我的推文是否我收集的确实是列表或什么
  • 如果您不打算将该文件用于 R 以外的任何其他程序,那么我强烈推荐 saveRDSloadRDS。也就是说,将列表保存为其现有的 R 格式,而不是将其转换为 CSV 格式。此外,阅读和写作可能会更快。
  • 哦,谢谢,至少我知道这个功能,我也会尝试的。但是,它实际上可以与其他 saveRDS 文件连接吗?因为我的全部目的实际上是压缩我要收集的推文。

标签: r csv twitter-r


【解决方案1】:

未经测试,但从我在网上阅读的内容来看,以下内容似乎应该有效:

  1. list 转换为data.frame

    library(plyr) 
    tweets.df = ldply(tweets, function(t) t$toDataFrame())
    
  2. 像以前一样使用write.csv,但只是在tweets.df 对象上而不是tweets 对象上。

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

来源:Herehere。另见:?"status-class"

【讨论】:

  • 我刚刚发现我实际上可以使用 twListToDF(tweets) 将推文转换为表格形式。不过我也会试试你的方法,谢谢!
  • @EricHeng,我也发现了(here),并且即将更新。我会建议,因为这是包的一部分,所以它可能是要走的路。
  • 但是如果列不匹配,即某些条目的列比其他的多,该怎么办?
【解决方案2】:

您可以使用以下方法将推文转换为推文数据框:

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

然后在你的 write.csv 函数中使用 tweets.df。

【讨论】:

    【解决方案3】:

    使用推特包:

    将您的推文转换为数据框

    tweets2df <- twListToDF(tweets)
    

    然后将其保存到 csv

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

    【讨论】:

      猜你喜欢
      • 2021-11-06
      • 1970-01-01
      • 2020-10-09
      • 2020-12-18
      • 1970-01-01
      • 2016-08-20
      • 2016-08-19
      • 2020-05-16
      • 2020-04-30
      相关资源
      最近更新 更多