小编wib*_*ley的帖子

在R中切割功能 - 独占或我是否重复计算?

基于我之前提出的一个问题,@ Andrie回答说,我对cut函数和标签的使用有疑问.

我想根据用户登录的次数获取摘要统计信息.

这是我的数据:

  # Get random numbers
  NumLogin <- round(runif(100,1,50))

  # Set the login range     
  LoginRange <- cut(NumLogin, 
       c(0,1,3,5,10,15,20,Inf), 
       labels=c('1','2','3-5','6-10','11-15','16-20','20+')
       )
Run Code Online (Sandbox Code Playgroud)

现在我有了我的LoginRange,但我不确定该cut函数是如何工作的.我想找到已登录1次,2次,3-5次等的用户,同时仅包括用户,如果他们在该范围内.是cut包括3两次(在2桶和3-5桶)功能?如果我查看我的示例,我可以看到登录3次的用户,但他们是cut'2'.我查看了文档和R我拥有的每本书,但没有运气.我究竟做错了什么?

另外 - 作为使用问题 - 我应该将LoginRange附加到我的数据框吗?如果是这样,最好的方法是什么?

DF <- data.frame(NumLogin, LoginRange)
Run Code Online (Sandbox Code Playgroud)

谢谢

r

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

testthat模式用于长时间运行的测试

我有一堆测试,我不希望它们在CRAN检查或Travis CI构建期间运行.它们要么长时间运行,要么可能导致写入网络数据库的事务/并发冲突.将它们分开的方法(来自R CMD检查测试)最适合测试吗?

我应该将这些测试放在单独的文件夹中吗?我应该标记他们的文件名并使用正则表达式吗?(例如,在test_package中使用filter参数跳过 @Jeroen的测试)

http://cran.r-project.org/web/packages/policies.html:

可以选择长时间运行的测试和插图代码进行检查,但确保剩下的检查确实可以执行包的所有功能.

r cran testthat

12
推荐指数
2
解决办法
1032
查看次数

默认R个人库位置为空

我将我的Ubuntu 16.04机器更新为R 3.4.1.当安装第一个非必需的包(例如,lubridate)时,我收到了以下消息:

你想创建一个个人库'null'来安装包吗?

这发生在RStudio和命令行R.我卸载r-base-core并重新安装r-baser-base-dev通过apt-get,但仍然有问题.

我注意到该/etc/R/目录包含四个在安装过程中暂时存在的短暂文件,但在apt-get install r-base r-base-dev完成时已消失 .我重新安装,以便快速抓取并粘贴这些文件到桌面.重新安装后,我将它们复制到/etc/R/:

~/Desktop/temp$ sudo cp repositories.dpkg-new /etc/R/repositories
~/Desktop/temp$ sudo cp Rprofile.site.dpkg-new /etc/R/Rprofile.site
~/Desktop/temp$ sudo cp ldpaths.dpkg-new /etc/R/ldpaths
~/Desktop/temp$ sudo cp Makeconf.dpkg-new /etc/R/Makeconf
Run Code Online (Sandbox Code Playgroud)

第二步是取消注释下面的第二步,发现于/etc/R/Renviron.显然这是@ dirk-eddelbuettel最近对r-base包装的改变.

# edd Jun 2017  Comment-out R_LIBS_USER
#R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/3.4'}
##R_LIBS_USER=${R_LIBS_USER-'~/Library/R/3.4/library'}
Run Code Online (Sandbox Code Playgroud)

我有一个由两部分组成的问题:

  1. 是上面推荐的过程,还是我应该采取不同的做法?(例如,沿着设置R_LIBS并避免"您想要使用个人库吗?".)
  2. 这台机器的未来R升级可能需要这两个步骤吗?

r

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

svyby比例的置信区间

是否存在从svyby对象为比例创建置信区间的现有函数(在我的示例中为survey包中的二进制项的交叉表).我经常比较各组的比例,并且拥有一个可以提取置信区间的函数(使用调查函数svyciprop而不是confint)是非常方便的.下面的例子显示了我想要实现的目标.

加载数据

library(survey)
library(weights)
data(api)
apiclus1$both<-dummify(apiclus1$both)[,1]#Create dummy variable
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
Run Code Online (Sandbox Code Playgroud)

创建一个svyby对象,比较stype中变量"both"的比例

b<-svyby(~both, ~stype, dclus1, svymean)
confint(b)#This works, but svyciprop is best in  other cases, especially when proportion is close to 0 or 1
svyciprop(b)#This requires that you specify each level and a design object
Run Code Online (Sandbox Code Playgroud)

是否有可能创建一个函数(例如byCI(b,method="likelihood"),它实现与confint(b)使用相同svyciprop?它基本上必须遍历svyby对象的每个级别并创建置信区间.到目前为止,我的尝试都没有成功.

可能有另一种方法,但我喜欢使用,svyby()因为它快速和直观.

r survey

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

RStudio中数据框列选择期间的自动完成错误

我使用该readxl包从Excel文件导入RStudio.现在我正在尝试使用$运算符访问该数据集中的列.但是,我一直收到通知:

(类型错误):null不是对象(评估a.length)

即使我以前多次执行过这种类型的操作而没有问题......

我得到的错误:

在此输入图像描述

"全局环境"窗格中的数据集:

在此输入图像描述

r autocomplete dataframe rstudio

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

RMySQL系统错误:10060

我有一个项目,其连接在同一设备上正常工作.我突然得到了下面的错误.我可以通过MySQL工作台从同一台设备连接.

可能是什么原因?

library(RMySQL)

con <- dbConnect(RMySQL::MySQL(),
                 host = "xxx",
                 dbname="yyy",
                 user = "zzz",
                 password = "############")

Error in .local(drv, ...) : 
  Failed to connect to database: Error: Lost connection to MySQL server at 'reading authorization packet', system error: 10060
Run Code Online (Sandbox Code Playgroud)

这是会话信息

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods …
Run Code Online (Sandbox Code Playgroud)

mysql r rmysql r-dbi

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

通过重复调用内存中的数据帧来减速

假设我有40个连续(DoubleType)变量,我已经使用了四分位数ft_quantile_discretizer.识别所有变量的四分位数非常快,因为该函数支持一次执行多个变量.

接下来,我想要一个热门代码那些分段变量,但是目前没有一个热代码支持所有这些变量的功能.所以我通过循环遍历变量,一次一个地管道ft_string_indexer,ft_one_hot_encodersdf_separate_column为每个分段变量.这可以完成工作.但是,随着循环的进行,它会大大减慢.我认为它的内存不足,但无法弄清楚如何编程,以便它以相同的速度在变量上执行.

如果q_vars是连续变量的变量名称(例如40个)的字符数组,我该如何以更加火花的方式对其进行编码?

for (v in q_vars) {
   data_sprk_q<-data_sprk_q %>% 
       ft_string_indexer(v,paste0(v,"b"),"keep",string_order_type = "alphabetAsc") %>%
       ft_one_hot_encoder(paste0(v,"b"),paste0(v,"bc")) %>%
       sdf_separate_column(paste0(v,"bc"),into=q_vars_cat_list[[v]]) 
}
Run Code Online (Sandbox Code Playgroud)

我也尝试将所有引用的变量作为单个大型管道执行,但这也没有解决问题,所以我认为它与循环本身没有任何关系.

test_text<-paste0("data_sprk_q<-data_sprk_q %>% ", paste0("ft_string_indexer('",q_vars,"',paste0('",q_vars,"','b'),'keep',string_order_type = 'alphabetAsc') %>% ft_one_hot_encoder(paste0('",q_vars,"','b'),paste0('",q_vars,"','bc')) %>% sdf_separate_column(paste0('",q_vars,"','bc'),into=",q_vars_cat_list,")",collapse=" %>% "))
eval(parse(text=test_text))
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

r apache-spark apache-spark-ml sparklyr

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

有没有办法在使用DBI和dbGetQuery时超时MySql查询?

我意识到了

dbGetQuery comes with a default implementation that calls dbSendQuery, then dbFetch, ensuring that the result is always freed by dbClearResult.

dbClearResult frees all resources (local and remote) associated with a result set. In some cases (e.g., very large result sets) this can be a critical step to avoid exhausting resources (memory, file descriptors, etc.)

但我的团队刚刚经历了一个锁定的表,我们进入了MySQL kill pid,我想知道 - 有没有办法超时使用该DBI包提交的查询?

我正在寻找,找不到相应的

dbGetQuery(conn = connection, 'select stuff from that_table', timeout = 90)

我尝试了这个,并使用和不使用参数集来分析函数,它似乎没有做任何事情; 为什么会这样,如果dbClearResult总是在玩?

mysql timeout r jdbc r-dbi

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

在R上一次执行多个SQL命令

我使用RMySQL和DBI来连接R和MySQL

library(RMySQL)
library(DBI, quietly = TRUE)
Run Code Online (Sandbox Code Playgroud)

对于一个命令,一切都工作正常,例如

sql = "select * from clients"
con <- dbConnect(MySQL(),user=user, password=password, dbname=dbname, host=host)
rs <- dbSendQuery(con, sql)
data <- fetch(rs, n=-1)
huh <- dbHasCompleted(rs)
dbClearResult(rs)
on.exit(dbDisconnect(con))
Run Code Online (Sandbox Code Playgroud)

但是,当我想用​​";"执行多个命令时 它们之间(例如设置参数),它返回错误.例如

sql = "SET @LAST_TEN_DAY = DATE_ADD(NOW(), INTERVAL -10 DAY); select * from clients where date > @LAST_TEN_DAY"
con <- dbConnect(MySQL(),user=user, password=password, dbname=dbname, host=host)
rs <- dbSendQuery(con, sql)
data <- fetch(rs, n=-1)
huh <- dbHasCompleted(rs)
dbClearResult(rs)
on.exit(dbDisconnect(con))
Run Code Online (Sandbox Code Playgroud)

非常感谢,

mysql sql r rmysql r-dbi

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

由于缺少GSL,GN程序包构建在Unix机器上失败 - GNU Scientific Library

我正面临着R包装开发的一个特别棘手的问题.我自己的程序包ggstatsplot(https://github.com/IndrajeetPatil/ggstatsplot)依赖于userfriendlyscience,这取决于另一个被调用的程序包MBESS,它本身最终依赖于另一个名为的程序包gsl.在Windows机器ggstatsplot上安装没有任何问题(通过持续集成平台评估:https://ci.appveyor.com/project/IndrajeetPatil/ggstatsplot).AppVeyor

但每当包被上安装的Unix机器,它抛出的错误ggstatsplot,不能因为下载userfriendlyscienceMBESS不能下载,因为gsl不能下载.在Travis使用虚拟Unix机器的持续集成平台上也会发现同样的事情,其中包构建失败(https://travis-ci.org/IndrajeetPatil/ggstatsplot).

现在,在Unix机器上为用户解决这个问题的一种方法是配置GSL(如下所述: 在Mac上安装R gsl包),但我不可能指望每个用户ggstatsplot都要经历艰难的配置过程GSL.我希望他们只是跑步install.packages("ggstatsplot")并完成它.

所以我真的很感激,如果有人能提供任何有用的建议,我可以通过从源头上解决这个问题来简化我的包用户生活.我是否应该在软件包本身中包含哪些内容来代表用户处理此问题?

r gsl travis-ci r-package

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