基于我之前提出的一个问题,@ 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)
?
谢谢
我有一堆测试,我不希望它们在CRAN检查或Travis CI构建期间运行.它们要么长时间运行,要么可能导致写入网络数据库的事务/并发冲突.将它们分开的方法(来自R CMD检查测试)最适合测试吗?
我应该将这些测试放在单独的文件夹中吗?我应该标记他们的文件名并使用正则表达式吗?(例如,在test_package中使用filter参数跳过 @Jeroen的测试)
http://cran.r-project.org/web/packages/policies.html:
可以选择长时间运行的测试和插图代码进行检查,但确保剩下的检查确实可以执行包的所有功能.
我将我的Ubuntu 16.04机器更新为R 3.4.1.当安装第一个非必需的包(例如,lubridate)时,我收到了以下消息:
你想创建一个个人库'null'来安装包吗?
这发生在RStudio和命令行R.我卸载r-base-core
并重新安装r-base
并r-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)
我有一个由两部分组成的问题:
是否存在从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()
因为它快速和直观.
我使用该readxl
包从Excel文件导入RStudio.现在我正在尝试使用$
运算符访问该数据集中的列.但是,我一直收到通知:
(类型错误):null不是对象(评估a.length)
即使我以前多次执行过这种类型的操作而没有问题......
我得到的错误:
"全局环境"窗格中的数据集:
我有一个项目,其连接在同一设备上正常工作.我突然得到了下面的错误.我可以通过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) 假设我有40个连续(DoubleType
)变量,我已经使用了四分位数ft_quantile_discretizer
.识别所有变量的四分位数非常快,因为该函数支持一次执行多个变量.
接下来,我想要一个热门代码那些分段变量,但是目前没有一个热代码支持所有这些变量的功能.所以我通过循环遍历变量,一次一个地管道ft_string_indexer
,ft_one_hot_encoder
并sdf_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)
任何帮助,将不胜感激.
我意识到了
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
总是在玩?
我使用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)
非常感谢,
我正面临着R
包装开发的一个特别棘手的问题.我自己的程序包ggstatsplot
(https://github.com/IndrajeetPatil/ggstatsplot)依赖于userfriendlyscience
,这取决于另一个被调用的程序包MBESS
,它本身最终依赖于另一个名为的程序包gsl
.在Windows机器ggstatsplot
上安装没有任何问题(通过持续集成平台评估:https://ci.appveyor.com/project/IndrajeetPatil/ggstatsplot).AppVeyor
但每当包被上安装的Unix机器,它抛出的错误ggstatsplot
,不能因为下载userfriendlyscience
而MBESS
不能下载,因为gsl
不能下载.在Travis
使用虚拟Unix机器的持续集成平台上也会发现同样的事情,其中包构建失败(https://travis-ci.org/IndrajeetPatil/ggstatsplot).
现在,在Unix机器上为用户解决这个问题的一种方法是配置GSL(如下所述:
在Mac上安装R gsl包),但我不可能指望每个用户ggstatsplot
都要经历艰难的配置过程GSL
.我希望他们只是跑步install.packages("ggstatsplot")
并完成它.
所以我真的很感激,如果有人能提供任何有用的建议,我可以通过从源头上解决这个问题来简化我的包用户生活.我是否应该在软件包本身中包含哪些内容来代表用户处理此问题?