我写的函数生成一个输出文件.附加功能可以获取该文件的内容(名称具有可以轻松匹配的模式),并执行更多操作.目前可以做以下事情:
function1(...)
# This will generate a file, say output_typea.md
# Then one could process this content further using
function2(input_file = 'output_typea.md')
Run Code Online (Sandbox Code Playgroud)
但是,由于这两个函数是按顺序运行的,我想让用户调用function2(),缺少输入只会读取与之匹配的最新文件dir(pattern = "*_type.md").不幸的是,似乎无法dir()按修改日期对列表进行排序.我需要的是最新的文件匹配文件名模式.有任何想法吗?
假设我有两个列表:
xx <- as.list(1:3)
yy <- as.list(LETTERS[1:3])
Run Code Online (Sandbox Code Playgroud)
如何组合这两个元素,使新列表的每个元素都是每个组件列表的相应元素的列表.所以如果我把上面两个结合起来,我应该得到:
> combined_list
[[1]]
[[1]][[1]]
[1] 1
[[1]][[2]]
[1] "a"
[[2]]
[[2]][[1]]
[1] 2
[[2]][[2]]
[1] "b"
[[3]]
[[3]][[1]]
[1] 3
[[3]][[2]]
[1] "c"
Run Code Online (Sandbox Code Playgroud)
如果您可以建议一个解决方案,我想将其扩展到3个或更多.
我有一个数据集记录了三栋建筑的能源使用情况.我有一个融化的数据框,可以从钻石集合中模仿:
data <- melt(diamonds[,c('depth','table','cut','color')],id=c('cut','color'))
Run Code Online (Sandbox Code Playgroud)
基本上,我从三个不同的建筑物(7'颜色'因素)每个月('切割')有加热('深度')和冷却('表')数据.我想在每个月的条形图中并排绘制三个建筑物(7'颜色'因子)('cut').
我希望代表冷却('表')或加热('深度')的条形根据建筑物('颜色'因子)改变它们的阴影,同时保持按月分组('切割').这是一种可视化钻石数据的坏方法,但应该适用于建筑物,因为它们的加热和冷却月份通常不会重叠.到目前为止,我有:
p <- ggplot(data,
aes(color,value,group=cut))
p <- p + geom_bar(stat = 'identity',
position = 'dodge',
aes(fill = variable))
print(p)
Run Code Online (Sandbox Code Playgroud)
我尝试使用scale_fill_manual,但无法想到一个有效的策略:
colours <- c('#0000FF', '#0033FF', '#0066FF', '#FF0000', '#FF3300', '#FF6600')
p <- p + scale_fill_manual(values = colours,
group = data$variable)
Run Code Online (Sandbox Code Playgroud) 使用plyr's llplyover 的优点lapply是它保留了列表名称.请参阅?llply解释.我喜欢这个功能,但似乎无法在嵌套列表的情况下使其工作.例:
library(plyr)
m <- as.list(1:2)
names(m) <- c('M1', 'M2')
foo <- list(m, m)
names(foo) <- paste0("R", 1:2)
result <- ldply(foo, function(x){
ldply(x, function(z) { data.frame(a=z, b= z^2)})
})
> result
.id a b
1 M1 1 1
2 M2 2 4
3 M1 1 1
4 M2 2 4
# if I don't operate on the inner list, I can preserve the outer list's names
result2 <- ldply(foo, function(x){
data.frame(a = …Run Code Online (Sandbox Code Playgroud) 将文本文件(如下面的示例)解析为两列data.frame然后转换为宽格式的最快方法是什么?
FN Thomson Reuters Web of Science™
VR 1.0
PT J
AU Panseri, Sara
Chiesa, Luca Maria
Brizzolari, Andrea
Santaniello, Enzo
Passero, Elena
Biondi, Pier Antonio
TI Improved determination of malonaldehyde by high-performance liquid
chromatography with UV detection as 2,3-diaminonaphthalene derivative
SO JOURNAL OF CHROMATOGRAPHY B-ANALYTICAL TECHNOLOGIES IN THE BIOMEDICAL
AND LIFE SCIENCES
VL 976
BP 91
EP 95
DI 10.1016/j.jchromb.2014.11.017
PD JAN 22 2015
PY 2015
Run Code Online (Sandbox Code Playgroud)
使用readLines是有问题的,因为多行字段没有键.读取固定宽度表也不起作用.建议?如果不是针对多行问题,可以使用对每个行/记录进行操作的函数轻松完成,如下所示:
x <- "FN Thomson Reuters Web of Science" …Run Code Online (Sandbox Code Playgroud) 我的数据看起来像这样:
model aspect cover contour
1 flowering ~ 1 2 52 2400
2 flowering ~ 1 + temp + precip:temp 1 52 2390
3 flowering ~ 1 + temp + precip 1 52 2390
4 flowering ~ 1 + temp + precip 1 52 2390
5 flowering ~ 1 + precip + precip:temp 1 52 2400
6 flowering ~ 1 + precip + precip:temp 1 52 2400
Run Code Online (Sandbox Code Playgroud)
此数据集中有40,000行,包含54个唯一模型.
如何获得汇总数据集,显示每个模型在纵横x轮廓x覆盖组合中出现的次数?
我有一个包含数据的电子表格,其日期如下所示:
Mon Jul 16 15:20:22 +0000 2012
Run Code Online (Sandbox Code Playgroud)
有没有办法将这些转换为R日期(最好是PST)而不使用正则表达式或没有其他方法?我很感激有效地进行这种转换的想法.
我写了许多包,generic情节是一个ggplot2.一个ggplot呼叫,不像其它的R函数调用,是分层这样一个最终可能会以几种方式(通过分离+的迹象)获得剧情看恰到好处.但是,我不希望有人通过我预先定义的选项受到影响,并希望他们能够自定义它而无需从头开始重新编写我的函数.我该如何做到这一点?
使用传统函数,我可以使用three dot运算符传递可选参数.这似乎更难了ggplot.
可重复的例子
f <- function(df) {
custom_plot <- ggplot(df, aes(mpg, disp, color = gear)) +
geom_point(size = 3) +
theme(panel.background = element_blank(), panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), panel.border = element_blank(),
axis.line = element_line(colour = "black"))
return(custom_plot)
}
Run Code Online (Sandbox Code Playgroud)
生成情节
f(mtcars)
Run Code Online (Sandbox Code Playgroud)
产生这个:

如何推广此功能,以便某人可以将更多或不同的选项传递给此图(特别是在通用图的情况下)?
如果我的功能被定义为:
f <- function(df, ...)
Run Code Online (Sandbox Code Playgroud)
我如何将这些传递给我ggplot?