我有一个函数,它包含两个列表上的循环并构建一些计算数据.我想将这些数据作为列表列表返回,并按一些值索引,但我得到的是错误的分配.
我正在尝试做的最小例子,以及我出错的地方是:
mybiglist <- list()
for(i in 1:5){
a <- runif(10)
b <- rnorm(16)
c <- rbinom(8, 5, i/10)
name <- paste('item:',i,sep='')
tmp <- list(uniform=a, normal=b, binomial=c)
mybiglist[[name]] <- append(mybiglist, tmp)
}
Run Code Online (Sandbox Code Playgroud)
如果你运行它并查看输出mybiglist,你会发现每个项目的命名方式都是非常错误的.
关于如何实现我真正想要的任何想法?
谢谢
PS.我知道在R中有一种感觉,如果一个人必须求助于循环,那么一个人失败了,但在这种情况下我觉得有道理;-)
另一个ggplot传奇问题!
我有一个表格的数据集
test <- data.frame(
cond = factor(rep(c("A", "B"), each=200)),
value = c(rnorm(200), rnorm(200, mean=0.8))
)
Run Code Online (Sandbox Code Playgroud)
所以两组和一些值我想绘制密度.我还想在剧情中添加一行表示每组的平均值,所以我:
test.cdf <- ddply(test, .(cond), summarise, value.mean=mean(value))
Run Code Online (Sandbox Code Playgroud)
然后在ggplot调用:
ggplot(test, aes(value, fill=cond)) +
geom_density(alpha=0.5) +
labs(x='Energy', y='Density', fill='Group') +
opts(
panel.background=theme_blank(),
panel.grid.major=theme_blank(),
panel.grid.minor=theme_blank(),
panel.border=theme_blank(),
axis.line=theme_segment()
) +
geom_vline(data=test.cdf, aes(xintercept=value.mean, colour=cond),
linetype='dashed', size=1)
Run Code Online (Sandbox Code Playgroud)
如果运行上面的代码,则会得到一个表示每个组的图例,但也会显示一个表示平均指示符vline的图例.我的问题是如何摆脱传说geom_vline()?
我不习惯使用R中的时间序列数据,我对此有点困惑.我有一个事件参考数据框和事件记录的数据.这些数据运行了7年,并希望将其总结为7年期间每月的事件数,并使用ggplot2进行绘制.
我似乎无法让日期转换一起工作,所以我最终得到一个计数和一个日期,我可以提供给ggplot2的scale_x_date()功能
这是一个数据示例:
df <- structure(list(Ref = structure(c(127L, 33L, 232L, 392L, 490L,
242L, 437L, 346L, 443L, 560L, 598L, 568L, 103L, 262L, 463L, 17L,
114L, 276L, 361L, 422L), .Label = c("01090013", "0109005", "0109006",
"0109007", "0109009", "0109010", "0109011", "0109012", "0109014",
"0109016", "0109022", "0110001", "0110004", "0110007", "0110009",
"0110011", "0111001", "0111002", "0111012", "0111016", "0111017",
"0112001", "0112003", "0112008", "0112010", "015004", "015006",
"015008", "015010", "015013", "016002", "016003", "016004", "016005",
"016006", "016008", "016009", "016010", "016011", "016013", "016014",
"016016", "017001", "018001", "018004", "018005", "018007", "018008",
"018009", …Run Code Online (Sandbox Code Playgroud)