假设我有一个函数从MySQL表读取数据,操作它并返回一些data.frame.注意,该函数只是一个例子,其功能无关紧要......,例如:
addRowSd <- function(table,con,pattern="^Variable") {
dframe <- dbReadTable(con,table)
cn <- colnames(dframe)
qs <- subset(x, x %in% grep(pattern, x, value=TRUE))
dframe$qsd <- sd(t(dframe[,c(qs)]))
return(dframe)
}
mydf$sd <- addRowSd(...)
Run Code Online (Sandbox Code Playgroud)
我最终得到一个名为mydf的data.frame.现在我想对SQL表名的字符向量这样做,并相应地命名返回的数据帧.如果我只是用
x=lapply(MySQLtablenames,addRowSd,con)
Run Code Online (Sandbox Code Playgroud)
我会得到一些名为x的列表.当然,我可以按照我喜欢的方式取消所有内容并重命名,但我的问题是:
如何使lapply(或其他类似函数)返回多个单数据帧或至少包含从我的字符向量"MySQLtablenames"派生的某些名称的列表?
我一直在尝试创建一个包含类似中断的标题的表.我在这里并不是太野心勃勃,并不关心我是否只是打破了很长的字符串或者只是一个两行标题.
dat <- matrix(round(rnorm(9, 20, 10)), 3, 3)
colnames(dat) <- c("some very long colname","short","another toooooooolong colname")
require(xtable)
m <- xtable(dat)
print(m,
floating=FALSE,
hline.after=NULL,
size="\\footnotesize",
tabular.environment="tabular",
add.to.row=list(pos=list(-1,0,nrow(m),0
),
command=c('\\toprule ',
'\\midrule ',
'\\bottomrule',
'\\\\ \\rowcolor[gray]{.9}'
)
)
)
Run Code Online (Sandbox Code Playgroud)
有没有办法打破标题,因为我的表已不适合页面,虽然我landscape已经使用了.一些sanitize.rownames基于的技巧?摆弄\shortstack但无法让它去......
我有几个向量的列表.我想检查列表中的所有向量是否相等.有identical这仅适用于两两比较.所以我写了下面这个看起来很丑的函数.我仍然找不到更好的解决方案.这是我的RE:
test_true <- list(a=c(1,2,3),b=c(1,2,3),d=c(1,2,3))
test_false <- list(a=c(1,2,3),b=c(1,2,3),d=c(1,32,13))
compareList <- function(li){
stopifnot(length(li) > 1)
l <- length(li)
res <- lapply(li[-1],function(X,x) identical(X,x),x=li[[1]])
res <- all(unlist(res))
res
}
compareList(test_true)
compareList(test_false)
Run Code Online (Sandbox Code Playgroud)
有什么建议?除了成对比较之外,是否存在相同的本机检查?
我想调整线条的大小(两者都有),因为我觉得它们太瘦了.下面的代码会这样做,但会为size创建一个图例,这是没用的,因为size没有可以映射到它的变量.
qplot(date,value,data=graph1,geom="line",colour=variable,xlab="",ylab="",size=1)
+ scale_y_continuous(limits = c(-0.3,0.3)) + opts(aspect.ratio = 2/(1+sqrt(5)))
+ scale_colour_manual("Variable",c(Line1="red",Line2="blue"))
+ opts(legend.size="none")
Run Code Online (Sandbox Code Playgroud)
我的图由两行代表,表示同一时间跨度内两个不同变量的时间序列.变量映射到颜色.如果我试图影响线条的大小,qplot总是尝试将"大小"映射到另一个参数并显示另一个图例.
我也跟着这个讨论,结束了哈德利告诉其他人,删除部分传奇还没有实现.我知道在混合中添加另一个参数意味着需要这个参数的图例.也许我出于视觉原因使用了错误的命令来影响线条大小.
感谢任何建议!
我有以下脚本
#!/bin/bash
/usr/bin/osascript << EOT
set myfile to choose file
EOT
no_ext=$(python -c "print '$myfile'.split('.')[0]")
### this works - just need to know how to pass the arg
R CMD Sweave no_ext.Rnw
pdflatex no_ext.tex
open no_ext.pdf
Run Code Online (Sandbox Code Playgroud)
任何人都可以指向"如何正确传递变量myfile"?
为所有建议编辑Thx!
不知道接受什么,所有答案都对我有所帮助,因为我从每个人那里学到了很多东西.
我尝试使用tryCatch从R查询我的PostgreSQL数据库。基本上,查询有效,但是我无法捕获错误并对错误做出反应。这是一个例子
insert_rows <- function(dframe,con){
out <- list()
for(i in 1:nrow(dframe)){
query <- .... some insert statement
tryCatch({dbGetQuery(con,query)},error=function(e) print("caught"))
}
}
Run Code Online (Sandbox Code Playgroud)
当我创建错误(例如,通过向唯一的PK输入重复记录)时,确实看到了PostgreSQL错误和警告,但这是的标准打印输出RPostgreSQL。我tryCatch在其他上下文中使用过,并且始终以这种方式工作。我已经用了dbGetQuery很多,但是我不能让它们一起工作。另外,将tryCatch放入列表中确实有很大帮助。
是否有按几列对 data.frame 进行排序的标准方法,但随着减少或增加的变化?例如,您可能希望按一个变量(递减)和下一个(递增)对 data.frame 进行排序。
有没有类似的东西:
mydf[ order(mydf$myvariable,mydf$myvariable2,decreasing=c(FALSE,TRUE)), ]
Run Code Online (Sandbox Code Playgroud) 请考虑以下代码:
test <- function(x,n){
selection<-names(x)[n]
graph <- ggplot(x, aes(factor(selection)))
graph + geom_bar()
}
test(mtcars,1)
Run Code Online (Sandbox Code Playgroud)
它抛出错误导致R无法找到选择.我也玩过周围substitute,eval并get没有成功.我发现了这个类似的问题,并且我认为我理解Joris'答案,但也不能对ggplot的参数使用相同的技巧.
如何检查整数向量是否是"顺序"的,即后续元素之间的差异恰好是1.我觉得我错过了像"is.sequential"这样的东西
这是我自己的功能:
is.sequential <- function(x){
all(diff(x) == rep(1,length(x)-1))
}
Run Code Online (Sandbox Code Playgroud) 我有字符向量,我想确保向量的所有元素具有相同的长度.因此我用空格填充短元素,如下所示:
vec <- c("fjdlksa01dada","rau","sjklf")
x <- sprintf("%-15s", vec)
nchar(x)
# returns
[1] 15 15 15
Run Code Online (Sandbox Code Playgroud)
喜欢上一个问题的答案.这很好,但它似乎与变音符号有问题.例如,如果我的矢量看起来像这样:
vec2 <- c("fjdlksa01dada","rauü","sjklf")
y <- sprintf("%-15s", vec)
nchar(y)
# returns
[1] 15 14 15
Run Code Online (Sandbox Code Playgroud)
我在Mac OS X上运行R(10.6).我怎样才能解决这个问题?
编辑:注意,我不打算修复nchar的输出,因为它是正确的.问题是sprintf失去了变形金刚.
编辑:更新R,更改为DWins区域设置 - 完全没有变化.但:
vec2 <- c("fjdlksa01dada","rauü","sjklf")
Encoding(vec2)
# returns
[1] "unknown" "UTF-8" "unknown"
Run Code Online (Sandbox Code Playgroud)
奇怪.
r ×9
ggplot2 ×2
applescript ×1
comparison ×1
diacritics ×1
eval ×1
knitr ×1
lapply ×1
macos ×1
postgresql ×1
printf ×1
sequence ×1
shell ×1
xtable ×1