如何处理具有 UTF-8 标记字符串的 R 包中的示例数据
How to handle example data in R Package that has UTF-8 marked strings
我想在我正在编写的 R
包中包含一个示例数据集(Twitter
推文和 metadata
)。
我使用 Twitter API
下载了一个示例 data.frame 并将其保存为 .RData
(带有相应的 .R
数据描述文件)在我的包中。
当我运行 R CMD
检查时,我得到以下注意,
* checking data for non-ASCII characters ... NOTE
Note: found 287 marked UTF-8 strings
我尝试用 ASCII=TRUE
保存 data.frame
,希望这能解决问题。但它仍然存在。关于如何在没有注释的情况下将 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
以防以后对大家有用,我找到的解决方案是这样的:
UTF-8 标记的字符在数据集中,因为 Twitter 推文有时包含表情符号。
我得到的建议是,除了删除所有 UTF-8 标记的字符串之外,没有直接的方法来删除 PACKAGE CMD CHECK 中的注释。
为此,我使用了命令:
nonUTF <- iconv(df$TroubleVector, from="UTF-8", to="ASCII")
在具有表情符号等的矢量上。如果该值具有 UTF-8 标记的字符串,则此命令返回 NA。我用它来对数据集进行子集化 - 现在我得到了一个干净的构建。
我 google 搜索 UTF-8 to ASCII online converter,粘贴到我的代码中,转换它,然后粘贴回我的脚本中。
由于这个答案被否决了,它引起了我对我 link 编辑为 non-performant 的原始站点的注意。所以我从答案中删除了那个特定的 link 。如果您偶然发现了一个坏的,请使用另一个,因为在 google.
的顶部结果中有很多可用的
stringi
包中的stringi::stri_enc_toascii()
解决了我开发包的问题
> 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
我想在我正在编写的 R
包中包含一个示例数据集(Twitter
推文和 metadata
)。
我使用 Twitter API
下载了一个示例 data.frame 并将其保存为 .RData
(带有相应的 .R
数据描述文件)在我的包中。
当我运行 R CMD
检查时,我得到以下注意,
* checking data for non-ASCII characters ... NOTE
Note: found 287 marked UTF-8 strings
我尝试用 ASCII=TRUE
保存 data.frame
,希望这能解决问题。但它仍然存在。关于如何在没有注释的情况下将 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
以防以后对大家有用,我找到的解决方案是这样的:
UTF-8 标记的字符在数据集中,因为 Twitter 推文有时包含表情符号。
我得到的建议是,除了删除所有 UTF-8 标记的字符串之外,没有直接的方法来删除 PACKAGE CMD CHECK 中的注释。
为此,我使用了命令:
nonUTF <- iconv(df$TroubleVector, from="UTF-8", to="ASCII")
在具有表情符号等的矢量上。如果该值具有 UTF-8 标记的字符串,则此命令返回 NA。我用它来对数据集进行子集化 - 现在我得到了一个干净的构建。
我 google 搜索 UTF-8 to ASCII online converter,粘贴到我的代码中,转换它,然后粘贴回我的脚本中。
由于这个答案被否决了,它引起了我对我 link 编辑为 non-performant 的原始站点的注意。所以我从答案中删除了那个特定的 link 。如果您偶然发现了一个坏的,请使用另一个,因为在 google.
的顶部结果中有很多可用的stringi
包中的stringi::stri_enc_toascii()
解决了我开发包的问题
> 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