我正在尝试使用
odbcDriverConnect('driver={SQL Server};server=servername\instancename,port;database=testing;username=abc;password=123456')
Run Code Online (Sandbox Code Playgroud)
连接远程数据库服务器(sql server 2008).但是我得到了
[RODBC]错误:状态08001,代码17,消息[Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB] SQL Server不存在或访问被拒绝.
错误.任何的想法?
我可以用
odbcDriverConnect('driver={SQL Server};server=localhost;database=testing;trusted_connection=true')
Run Code Online (Sandbox Code Playgroud)
连接我的本地数据库服务器(sql server 2008).
我使用RODBC和R和knitr使用各种生产数据库进行一些报告.在其中一些报告中,我正在针对多个数据库运行多次查询.
我的每个查询都是以以下形式执行的:
get.total.orders <- function(db.connex.string, start.date, end.date){
db.connex <- odbcDriverConnect(db.connex.string)
ord.qry <- sprintf("SELECT ord_OrderReference AS 'order.ref',
ord_RegisterDate as 'register.date'
FROM Orders
WHERE ord_RegisterDate >= '%s' AND ord_RegisterDate < '%s'",
start.date, end.date)
orders <- sqlQuery(db.connex, ord.qry)
odbcClose(db.connex)
return(orders)
}
Run Code Online (Sandbox Code Playgroud)
请注意,在此函数中打开和关闭ODBC通道,并且在通道的打开和关闭之间只运行一个简单的查询.
尽管如此,当我多次运行报告时(例如,在编写报告时),我会收到以下警告:
Warning: closing unused RODBC handle 41
Run Code Online (Sandbox Code Playgroud)
运行报告的次数越多,错误中报告的句柄数就越高.
为什么,如果我在查询功能中打开和关闭频道,我是否会打开"未使用"的RODBC句柄?
更重要的是,我该如何避免这个问题?
如何xyplot在保持轴刻度刻度的同时去除周围的盒子?根据Edward Tufte的极简主义数据图形审美精神,这些轴线是"非数据墨水",可以(应该?)"擦除".
library(lattice)
my.df <- data.frame(x=-10:10)
my.df$y <- my.df$x^2
xyplot(y~x,data=my.df)
Run Code Online (Sandbox Code Playgroud)

似乎格子显示参数(例如axis.line$col)控制轴线和轴标记在一起:
xyplot(y~x,data=my.df,
par.settings=list(axis.line=list(col="transparent")))
Run Code Online (Sandbox Code Playgroud)

...这不是理想的结果,所以看起来没有一种简单的方法可以在离开盒子时关闭线条.
我能想到的最好的是一个蛮力的黑客,我用手建立刻度线panel.segments:
at.x=pretty(c(-10,10))
at.y=pretty(c(0,100))
xyplot(y~x,data=my.df,
par.settings=list(axis.line=list(col="transparent")),
scales=list(x=list(at=at.x,labels=at.x),
y=list(at=at.y,labels=at.y)),
panel=function(...){
panel.xyplot(...)
panel.segments(x0=at.x,x1=at.x,y0=-4,y1=-2)
panel.segments(x0=-11.5,x1=-11,y0=at.y,y1=at.y)
}
)
Run Code Online (Sandbox Code Playgroud)

这接近于期望的结果,但是需要相当多的摆弄才能使刻度标记成为合理的长度并且偏离数据点的"漂亮"距离.这些值不会从一个图形转换为下一个图形.另外,请注意轴标签现在填充距刻度线太远.我确信有一种方法可以减少填充,但这只会使代码更加丑陋且便于携带.
那么怎样才能抑制构成绘图区域周围"框"的线条,同时保留刻度线和轴标签的完整性?如果这种方法也可用于抑制一些但不是所有的线(例如,留下左线和下线,但抑制顶线和右线),则可获得奖励积分.
询问超级用户并得到蟋蟀,所以在这里尝试。这个似乎跨越了 SU/SO 的边界。
在解决某种 R 配置问题时,尝试在同事的 Windows 10 机器上编织 .Rmd 时导致 pandoc 转换失败,我注意到第一个路径.libPaths()指向网络目录上的路径而不是c:/Users/[username]/R/win-library/...目录。
Sys.getenv()在 R 中运行显示HOMEDRIVE和HOMEPATH(如预期的那样)c:和\Users\[username],但HOME列出了一个环境变量,指向我们在中找到的网络路径.libPaths()
SET在 cmd shell 中运行根本没有列出这个HOME环境变量,所以它似乎是 R 在其他地方找到的东西......
R 从哪里获得这个HOME环境变量?
FWIW:我通过设置 Windows 用户环境变量 HOME=%HOMEDRIVE%%HOMEPATH% 修复了配置问题;R 然后从那里适当地设置所有其他环境变量。
我有一个data.frame,其中包含一列逻辑列,例如
> tmp <- data.frame(a=c(13, 23, 52),
+ b=c(TRUE,FALSE,TRUE),
+ c=c(TRUE,TRUE,FALSE),
+ d=c(TRUE,TRUE,TRUE))
> tmp
a b c d
1 13 TRUE TRUE TRUE
2 23 FALSE TRUE TRUE
3 52 TRUE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
我想计算一个汇总列(比如说:e),它AND在整个逻辑列范围内是合乎逻辑的.换句话说,对于给定的行,如果所有b:d都是TRUE,那么e将是TRUE; 如果有b:d FALSE,那么e就是FALSE.
我的预期结果是:
> tmp
a b c d e
1 13 TRUE TRUE TRUE TRUE
2 23 FALSE TRUE TRUE FALSE
3 52 TRUE FALSE TRUE FALSE
Run Code Online (Sandbox Code Playgroud)
我想通过索引来指示列的范围,因为我有一堆列,名称很麻烦.以下代码有效,但我宁愿使用矢量化方法来提高性能.
> tmp$e <- NA
> for(i in …Run Code Online (Sandbox Code Playgroud) 我希望能够以百分比单位显示格子xyplot的y轴(例如0.45 = 45%).
以下是一些假工业过程产量数据的示例:
library(lattice)
set.seed(1234)
my.df <- data.frame(period=c(1:20),
n=floor(runif(n=20,min=40,max=80)),
d=rpois(n=20,lambda=5))
my.df$yield <- (my.df$n-my.df$d)/my.df$n
xyplot(yield~period,data=my.df)
Run Code Online (Sandbox Code Playgroud)

我希望上面的y轴标签代替80%,85%,90%,95%
我的yield变量是在范围内以小数表示的分数(0 <= yield <= 1).我不想在data.frame中预处理数据(例如,乘以100),我希望通过绘图操作来处理这个问题.
这个现有的问题涵盖了通过对输出进行后处理来替换乳胶表中行颜色的方法print.xtable(),但我认为通过使用stats.stackexchange中描述的add.to.row参数可以实现相同的功能,从而避免了后处理,这对Sweave很好.该答案涉及着色一个特定行的背景,但我认为它可以扩展到着色所有奇数行.print.xtable()
我遇到的问题与add.to.row参数有关,使列表pos的长度等于字符向量的长度command.帮助文件print.xtable()描述:
add.to.row:两个组件的列表.第一个组件(应该称为'pos')是一个列表,其中包含最后应在其上添加额外命令的行的位置,第二个组件(应该称为'command')是一个相同的字符向量包含应在指定行末尾添加的命令的第一个组件的长度.默认值为"NULL",即不添加命令.
在使用longtable环境时,您可以使用此add.to.row参数来定义应在每个页面上打印的表的"标题"行,如下所示:
library(xtable)
my.df=data.frame(a=c(1:10),b=letters[1:10])
print(xtable(my.data.frame,caption="My Table"),
tabular.environment="longtable",
floating=FALSE,
hline.after=c(-1,nrow(my.data.frame)),
add.to.row=list(pos=list(0),command="\\hline \\endhead ")
Run Code Online (Sandbox Code Playgroud)
我需要保留此功能,并添加每隔一行应获取命令的其他功能 \\rowcolor[gray]{0.8}
听起来很简单.pos应该是类似的东西list=(0,1,3,5,7,9),command应该是类似的东西c("\\hline \\endhead ","\\rowcolor[gray]{0.8}","\\rowcolor[gray]{0.8}","\\rowcolor[gray]{0.8}","\\rowcolor[gray]{0.8}","\\rowcolor[gray]{0.8}")
当然,我想利用一些内置函数来构建奇数行序列和重复序列"\\rowcolor[gray]{0.8}",所以我想到了:
pos=list(0,seq(from=1,to=nrow(my.df),by=2))
Run Code Online (Sandbox Code Playgroud)
和
command=c("\\hline \\endhead ",
rep("\\rowcolor[gray]{0.8}",length(seq(from=1,to=nrow(my.df),by=2))))
Run Code Online (Sandbox Code Playgroud)
我的问题是pos上面的列表评估为:
> pos
[[1]]
[1] 0
[[2]]
[1] 1 3 5 7 9
Run Code Online (Sandbox Code Playgroud)
长度为2 ......在这种情况下需要长度为6.
如果我下载了一个具有已知 SHA256 哈希值的文件,我如何使用 PowerShell 检查该文件是否与预期的哈希值匹配?