我想在我的包中添加一个回退依赖项.问题是我想要符合CRAN并且无法弄清楚如何正确地完成它.
更具体地说,我想用data.table's fread / fwrite.除此之外,我不想拥有完整的data.table依赖.如果data.table没有安装,我的包应该回到使用标准read.csv和write.csv.
我见过这个类似的线程:处理可选包依赖的正确方法
并且还使用了类似于@Hadley在评论中建议的技术:
req <- require(data.table)
if(req){
data.table::fwrite(...)
} else {
write.csv(...)
}
Run Code Online (Sandbox Code Playgroud)
这确实有效,但在运行CHECK时我得到一个注意:
'library' or 'require' call to ‘data.table’ in package code.
Please use :: or requireNamespace() instead.
这意味着我不会通过CRAN的主管......
处理这个问题的正确方法是什么?
我在使用存储过程填充预定义表时遇到一些麻烦。\nmytable 有 6 个字段:uid、testrun、exp1、exp2、exp3、weightedvalue,其中 uid 是自动增量 PK。我的 sp 包含一个插入语句,例如:
\n\nCREATE PROCEDURE test (IN testrun INT)\nBEGIN\n.... some declare statements ... \nINSERT INTO exp_factors(testrun,exp1,exp2,exp3,weightedvalue) VALUES\n(testrun, \n exp1,\n exp2_1 + exp2_2,\n exp3_1 + exp3_2,\n exp1 * 0,2 + (exp2_1+exp2_2) * 0.5 + (exp3_1+exp3_2) * 0.3);\n\n\nEND\nRun Code Online (Sandbox Code Playgroud)\n\n不幸的是,这会导致标题中所述的错误。我知道我只插入 6 个字段中的 5 个,但显然我不想手动输入自动增量 PK uid。\n如何在不传递自动增量 id 的情况下将我的 exp 值输入到此表中。\n当然我可以创建一个表没有额外的 PK,但是 \xc2\xb4s 不是我想要的。
\n\n感谢您提前提出任何建议!
\n我的问题可能不如标题所暗示的那么普遍.我在Mac OS X上使用MySQL数据库运行R来存储数据.我已经和Komodo/Sciviews-R合作了一段时间.最近我需要自动生成报告并查看Sweave.我猜StatET/Eclipse似乎是Sweavers的"标准"解决方案.
1)从Komodo切换到StatET Eclipse是否合理?之前我尝试过StatET但是选择Komodo而不是StatET因为我喜欢calltip/autosuggest以及来自Komodo的更方便的配置.
2)生成Sweave文件的合理工作流程是什么?通常我先开发我的R代码,然后再关心报告.我今天刚刚了解到,Sweave中有一个文件同时包含R代码和Latex代码,并且从该文件中创建了.tex文档.虽然示例文件看起来很方便,但无法想象如何将我的250 + R代码行输入文件并将其与Latex混合.
是否可以只将qplot()和ggplot()语句输入到这样的文档中,并以某种方式获取数据库连接和中间结果等功能?
或者仅仅是习惯于Latex和R代码的混合?
Thx的任何建议,提示,链接和回到根源的呼声......
我想知道是否可以分别绘制一个用ggsave生成的.png文件.如果我不想使用默认的图例ort标题并将其设置为FALSE,则会留下很多空白区域.那么有一种R方法可以将文件切割到图形本身上方和下方的几个像素吗?
Thx提前!
以下在Mac OS X上运行正常:
#!/bin/bash
R CMD Sweave myfile.Rnw
pdflatex myfile.tex
open myfile.pdf
Run Code Online (Sandbox Code Playgroud)
现在,我意识到这3行代码对我的工作非常有帮助 - 独立于某些特定文件.因此,我想将该文件用作参数.我知道如何使用一个参数本身但是在字符串之后拆分输入并在之后连接它时会出现问题.如果我能够分割文件名参数,如:
split($1,".") # return some array or list ("name","ext")
Run Code Online (Sandbox Code Playgroud)
或者是否比在shell脚本中使用Python更简单,完全不同?
提前获取任何一般建议和示例!
我想计算二元因子变量的变化次数.对于每个用户ID,此变量可以不时地多次来回更改.现在我想计算在给定的时间跨度内每个用户id对此变量的更改次数.
数据按id,年,月,myfactor排序.我在MySQL中试过这个但到目前为止没有成功.在R中有一个简单的方法吗?我虽然在我的data.frame中添加了另一个列并逐步添加条件...也许有%的%东西?
请事先提出建议......
嗯,当然......这是一些例子 - 抱歉没有立即提供,我的头疼;):
myf Year month userid
1 A 2005 1 260
2 B 2005 2 260
3 B 2005 4 260
4 A 2005 5 260
5 B 2005 6 260
6 B 2005 1 261
Run Code Online (Sandbox Code Playgroud)
如果这是我的数据集,我想更新更改列,计算每个用户myf的更改次数.基本上id喜欢最终:
user changes
260 3
260 0
Run Code Online (Sandbox Code Playgroud)
等等......
HTH
我很乐意在我的Sweave报告中创建的所有graphics.pdf上使用一些基于shell脚本的pdfcrop.因此,如果将所有图形存储到子文件夹而不是丢弃所有乳胶类似.aux .log文件(等等)所在的位置,我会很高兴.如果我只需要在特定目录中的所有文件上使用裁剪脚本,那就容易多了.
这是我的Sweave大块:
\begin{figure}[htbp]
\begin{center}
<<fig=true,echo=false>>=
print(mygraph)
@
\caption{my graph}
\end{center}
\end{figure}
Run Code Online (Sandbox Code Playgroud)
如果我运行sweave代码,mygraph.pdf存储在与report.tex文件本身相同的目录中.
有没有办法将此文件存储在像/ graphics这样的现有子文件夹中?
或者换一种说法:我如何保持我的ts指数?大多数时候我在计算中使用时间序列,它不再是ts对象.在编写返回ts对象的函数并保留索引信息时,我应该遵循什么策略?
例如:
#standard Hodrick Prescott Filter
hpfilter <- function(x,lambda=1600){
eye <- diag(length(x))
result <- solve(eye+lambda*crossprod(diff(eye,lag=1,d=2)),x)
### this is what I am talking about :)
### intuitively i´d maybe add something like this
result <- ts(result,start=start(x),end=end(x),frequency=frequency(x))
###
return(result)
}
Run Code Online (Sandbox Code Playgroud)
但是,我觉得这种笨拙和累赘.是否有一种更优雅的方式(也许我应该上课......)?
与R合作时,我觉得自己有很多工具和技巧可以解决许多日常问题.然而,我经常意识到我可以更优雅地解决问题.例如,我阅读了关于类和方法的内容,但最后没有越过河流使用它们.很可能是因为我的日常工作并不需要.我仍然觉得我的创造力受到我能处理的工具的限制.
什么是起点,分别是超越某些先进/中级初学者/数据杂耍水平的好策略?
我得到了几个data.frames的列表,我想从每个data.frames中删除前两列.我这样做了,但觉得这可能更像R-ish.
data(mtcars)
data(iris)
myList <- list(A = mtcars, B = iris)
# helper function
removeCols <- function(df,vec) {
res <- df[,-vec]
}
lapply(myList,removeCols,1:2)
Run Code Online (Sandbox Code Playgroud)
显然这可以完成这项工作,但对我来说,似乎我必须在这里遗漏一些东西(例如在lapply中使用运算符,因为它在技术上也是一个函数).但是,这种方法的主要缺点是,对于要对该列表的所有元素执行的每个小任务,都需要一个小辅助函数.