小编amr*_*rrs的帖子

文本挖掘 R 包和正则表达式来处理替换智能卷曲引号

我有一堆像下面这样的文本,带有不同的智能引号 - 用于单引号和双引号。我所知道的软件包最终所能得到的就是删除这些字符,但我希望将它们替换为正常的引号。

\n\n
textclean::replace_non_ascii("You don\xe2\x80\x98t get \xe2\x80\x9cyour\xe2\x80\x9d money\xe2\x80\x99s worth")\n
Run Code Online (Sandbox Code Playgroud)\n\n

收到的输出:"You dont get your moneys worth"

\n\n

预期输出:"You don\'t get "your" money\'s worth"

\n\n

如果有人有正则表达式来一次替换所有这样的引号,我也将不胜感激。

\n\n

谢谢!

\n

regex r text-mining

5
推荐指数
1
解决办法
2460
查看次数

每次加载包时从互联网下载新数据

我有一个包,可以从互联网上抓取数据并根据函数调用显示其内容。但最近我从 CRAN 收到一条消息,表示安装 Binary build 后数据会变得陈旧(因为该函数在utils.R并且在构建时已下载)。

在过去的几天里,我尝试了以下方法但没有成功:

  • 使用全局变量,<<-但它会生成 CRAN 注释,我还浏览了一些建议不要使用该方法的答案 注意:no visible binding for global variable
  • 创建一个新环境,然后在其中添加这个下载的对象,但它从未成功,因为我无法在其他函数中访问该对象。参考:在哪里创建包环境变量?

这是当前的包文件:https ://github.com/amrrs/tiobeindexr/tree/master/R

尝试过的解决方案:

zzz.r 文件:

.onLoad <- function (libname, pkgname)
{

  assign("newEnv", new.env(hash = TRUE, parent = parent.frame()))

  newEnv$.all_tablesx789  <- rvest::html_table(xml2::read_html('https://www.tiobe.com/tiobe-index/'))


}
Run Code Online (Sandbox Code Playgroud)

核心代码中的函数之一。

hall_of_fame <- function() {

  #check_data()

  #.GlobalEnv$.all_tablesx789 <- check_data()

  newEnv$.all_tablesx789[[4]]

}
Run Code Online (Sandbox Code Playgroud)

该包构建良好,但未找到该对象。错误如下:

Error in hall_of_fame() : object 'newEnv' not found

我只有几天的时间在 CRAN 上保存我的包,我希望我已经通过保存下载的这个问题提供了足够的数据。

谢谢!

r r-package

5
推荐指数
1
解决办法
228
查看次数

改进的马赛克图(如热图或气泡)

我有两个因素,我正在制作它的交叉表.

x<-table(clean$VMail.Plan,clean$International.Plan)
Run Code Online (Sandbox Code Playgroud)

我实际上想以图形方式表示它:

在此输入图像描述

mosaicplot(x,data=clean,color=2:4,legend=TRUE,las = 1)
Run Code Online (Sandbox Code Playgroud)

正常的镶嵌图不是很吸引人,我无法使用ggplot2包使这更具吸引力.要么像热图还是泡泡?

实际的列联表:

        No   Yes
  No    27  239
  Yes  243 2159
Run Code Online (Sandbox Code Playgroud)

r crosstab ggplot2

3
推荐指数
1
解决办法
2617
查看次数

在任何列中使用 NA(缺失值)对所有行进行子集化

我有一个包含 3000 个 obs 的数据集(teleco),其中有许多(332)个缺失值(NA)。当我尝试将所有缺失值子集到另一个数据帧中时,我奇怪地得到了 3745 个 obs。

clean = na.omit(teleco)
new = teleco[is.na(teleco[1:19])==TRUE, ]
Run Code Online (Sandbox Code Playgroud)

干净 - 2668 obs of 19 vars

新 - 3745 个 obs,共 19 个变量

电信 - 3000 obs of 19 vars

我确定我做错了什么。有人可以帮忙吗?

r na

1
推荐指数
1
解决办法
353
查看次数

标签 统计

r ×4

crosstab ×1

ggplot2 ×1

na ×1

r-package ×1

regex ×1

text-mining ×1