如何处理具有UTF-8标记字符串的R Package中的示例数据

时间:2015-03-14 00:10:10

标签: r twitter utf-8

我想在我编写的Twitter包中添加一个示例数据集(metadata推文和R)。

我使用Twitter API下载了一个示例data.frame,并将其保存为.RData(带有相应的。R数据描述文件)。

当我运行R CMD检查时,我会收到以下注意事项,

 * checking data for non-ASCII characters ... NOTE
 Note: found 287 marked UTF-8 strings

我尝试使用data.frame保存ASCII=TRUE,希望这可以解决问题。但它仍然存在。关于如何让R CMD CHECK在没有笔记的情况下运行的任何想法?

(另外,如果这是解决方案的话,我愿意从示例数据中删除所有UTF-8个标记的字符串。谢谢!

data.frame中的示例行:

First time in SF (@ San Francisco International Airport (SFO) - @flysfo in San Francisco, CA) https://t.co/1245xqxtwesr
  favorited favoriteCount replyToSN             created truncated replyToSID                 id replyToUID
1     FALSE             0      <NA> 2015-03-13 23:30:35     FALSE       <NA> 576525795927179264       <NA>
                                                   statusSource screenName retweetCount isRetweet retweeted
1 <a href="http://foursquare.com" rel="nofollow">Foursquare</a>  my_name93            0     FALSE     FALSE
      longitude    latitude
1 -122.38100052 37.61865062

3 个答案:

答案 0 :(得分:5)

如果它对将来的任何人都有用,我发现的解决方案是:

UTF-8标记的字符在数据集中,因为Twitter推文有时包括表情符号。

我给出的建议是,没有一种简单的方法可以摆脱PACKAGE CMD CHECK中的NOTE而不只是删除所有UTF-8标记的字符串。

为此,我使用了命令:

nonUTF&lt; - iconv(df$TroubleVector, from="UTF-8", to="ASCII")

在具有表情符号等的矢量上。如果该值具有UTF-8标记的字符串,则此命令返回NA。我用它来对数据集进行子集化 - 现在我得到了一个干净的构建。

答案 1 :(得分:0)

我遇到了同样的问题,另一个快速的解决方案是将整个脚本复制/粘贴到here这样的站点中,然后将代码的ascii版本粘贴到旧版本(utf-8)的上方代码

答案 2 :(得分:0)

stringi::stri_enc_toascii() 包中的 stringi 解决了我在包开发中的问题。

> stringi::stri_enc_isascii(a)
  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [18] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [35] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [52] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [69] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [86] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[103] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[120] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[137] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[154] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> b <- stringi::stri_enc_toascii(a)
There were 50 or more warnings (use warnings() to see the first 50)
> stringi::stri_enc_isascii(b)
  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [22] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [43] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [64] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [85] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[106] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[127] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[148] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE