我正在尝试使用rmongodb从MongoDB数据库中获取信息以便在R中进一步处理.但是,我真的开始时遇到了一些困难.这个工作:
cursor <- mongo.find(mongo, "people", query=list(last.name="Smith", first.name="John"),
fields=list(address=1L, age=1L))
while (mongo.cursor.next(cursor)){
print(mongo.cursor.value(cursor))}
Run Code Online (Sandbox Code Playgroud)
现在,如果我想找到名字是"John"或"Bob"或"Catherine"的人呢?我试过query=list(last.name="Smith", first.name=c(John, Bob, Catherine))但这没有用.替换也没有=用%.
另一个问题是数据库内容是嵌套的,这意味着我有子树,子树等等.例如,对于条目first.name="John", last.name="Smith"我可能有子条目address, age, occupation,并且再次占用我可能有类别作为子树(例如从2005年到2012年的年份和每年我都会有一个像"失业","职员","企业家"这样的条目.那么,如果我想找到所有名字为"约翰"的人,他们已经40岁并且在2010年失业了怎么办?查询会是什么样的?
编辑作为对Stennie的回复:这是我的数据库结构和我正在尝试的查询的示例.想象一下,一所大学的校友被细分为小组(例如"非常好的学生","好学生"等).然后,每个组都包含已分配给该组的人员列表及其详细信息.
(0){..}
_id : (Object ID) class id
groupname: (string) unique name for this group (e.g. "beststudents")
members[11]
(0){..}
persid : (integer) 1
firstname: (string)
surname: (string)
age: (integer)
occupation: (string)
(1){..}
persid : (integer) 2
firstname: (string)
surname: (string)
age: (integer)
occupation: (string)
# and so on …Run Code Online (Sandbox Code Playgroud) 我有一堆数据(每个测量系列10,000到50,000个值),我有兴趣自动识别这些值分布的密度估计中的局部最大值/最小值.事实上,我认为通常应该有两个峰,由一个坑隔开,我想找到将两个峰彼此分开的坑,以便将数据分成两部分进行进一步处理.如果可能的话,我还想知道峰的位置.
由于密度估计可能包含非常小的局部变化,我希望有可能调整"灵敏度".到目前为止我能找到的最好的是@Tommy的解决方案:https://stackoverflow.com/a/6836924/1003358 这是一个例子:
library(ggplot2)
d <- density(faithful$eruptions, bw = "sj")
loc.max <- d$x[localMaxima(d$y)]
ggplot(faithful, aes(eruptions)) + geom_density(adjust=1/2) +
geom_vline(x=loc.max, col="red") +
xlab("Measured values")
Run Code Online (Sandbox Code Playgroud)

现在,我的数据噪音很大:
d <- density(my.df$Values, bw = "sj")
loc.max <- d$x[localMaxima(d$y)]
ggplot(my.df, aes(Values)) + geom_density(adjust=1/2) +
geom_vline(x=loc.max, col="red") +
xlab("Measured values")
Run Code Online (Sandbox Code Playgroud)

试图调整参数(注意尾部有两个"不需要的"峰值):
d <- density(my.df$Values, bw="nrd", adjust=1.2)
loc.max <- d$x[localMaxima(d$y)]
ggplot(my.df, aes(Values)) + geom_density(adjust=1/2) +
geom_vline(x=loc.max, col="red") +
xlab("Measured values")
Run Code Online (Sandbox Code Playgroud)

所以问题是:
1)如何在这样的噪声数据集中自动识别真实峰值?2)如何可靠地找到分离这些峰的凹坑?
我想从Windows命令行运行此示例脚本:http://mazamascience.com/WorkingWithData/?p = 912.所以我打开命令行并输入Rscript tryCatch.R 1.但是,我一直收到错误消息Error: R not found.我确实将PATH环境变量设置为C:\Programme\R\R-3.0.1\bin.如果我只是键入R.exe,它确实启动R,但它找不到要在开始时加载的包(例如package 'utils' in options<"defaultPackages"> was not found).我想我必须在某处设置另一条通往图书馆的路径,但我不知道该在哪里做.
更新:显式键入后PATH C:\Programme\R\R-3.0.1\bin(而不是仅将其添加到环境变量PATH的值),似乎R找到了.但是,会出现一个新问题:In normalizePath<path.expand(path), winslash, mustWork>: path[2] = "C:/Programme/R/R-3.0.1/library": Access denied与methods库相同.然后:Calls: .First ... library -> .getRequiredPackages2 -> library -> normalizePath Execution stopped.我使用的是Windows 7,但我确实拥有管理员权限.
我将从一个MWE开始:
library(ggplot2)
p <- ggplot(mtcars, aes(factor(cyl), mpg, fill = factor(am)))
p + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

我想修改胡须的颜色,例如,将其设置为红色.我认为不可能直接做到这两点geom_boxplot,所以这是我的解决方法:
library(Hmisc)
stat_sum_df <- function(fun, geom = "crossbar", ...) {
stat_summary(fun.data = fun, geom = geom, width = 0.4, ...)
}
p + stat_boxplot(geom = 'linerange', colour = "red", position = "dodge) +
stat_sum_df("median_hilow", conf.int = 0.5, position = "dodge")
Run Code Online (Sandbox Code Playgroud)

线范围堆叠在一起.接下来尝试:
p + stat_boxplot(geom = 'linerange', colour = "red", position = position_dodge(width = .5)) +
stat_sum_df("median_hilow",conf.int=0.5, position = position_dodge(width = .5))
Run Code Online (Sandbox Code Playgroud)

看起来更好,但现在盒子之间有一个固定的空间(比较第一和第三个图上的cyl = 8).由于我将使用这个代码用于不同级别的am …
我想将R中的hclust-dendrogram导出到数据表中,以便随后将其导入另一个("自制")软件.str(unclass(fit))提供了树形图的文本概述,但我正在寻找的是一个数字表.我看过Bioconductor ctc软件包,但它产生的输出看起来有点密码.我想有类似这样的桌上的东西:http://stn.spotfire.com/spotfire_client_help/heat/heat_importing_exporting_dendrograms.htm
有没有办法让这出R中的hclust对象的?
我想知道连接MongoDB rmongodb与RMongo包之间的主要区别是什么R.这两个包的优点和缺点是什么?
我有以下三个数据帧:
df1 <- data.frame(name=c("John", "Anne", "Christine", "Andy"),
age=c(31, 26, 54, 48),
height=c(180, 175, 160, 168),
group=c("Student",3,5,"Employer"), stringsAsFactors=FALSE)
df2 <- data.frame(name=c("Anne", "Christine"),
age=c(26, 54),
height=c(175, 160),
group=c(3,5),
group2=c("Teacher",6), stringsAsFactors=FALSE)
df2 <- data.frame(name=c("Christine"),
age=c(54),
height=c(160),
group=c(5),
group2=c(6),
group3=c("Scientist"), stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
我想将它们组合起来,以便得到以下结果:
df.all <- data.frame(name=c("John", "Anne", "Christine", "Andy"),
age=c(31, 26, 54, 48),
height=c(180, 175, 160, 168),
group=c("Student", "Teacher", "Scientist", "Employer"))
Run Code Online (Sandbox Code Playgroud)
目前我正是这样做的:
df.all <- merge(merge(df1[,c(1,4)], df2[,c(1,5)], all=TRUE, by="name"),
df3[,c(1,6)], all=TRUE, by="name")
row.ind <- which(df.all$group %in% c(6,5))
df.all[row.ind, c("group")] <- df.all[row.ind, c("group2")]
row.ind2 <- which(df.all$group2 %in% …Run Code Online (Sandbox Code Playgroud) 我想data.table在函数中创建一个交叉连接.说,我们有一个矢量vals <- c("yes", "no").现在这个有效:CJ(vals, vals).但是,根据功能输入,我可能需要创建例如CJ(vals, vals, vals, vals).就像是
vals <- c("yes", "no")
n <- 4
CJ(rep(vals, n))
Run Code Online (Sandbox Code Playgroud)
显然不会奏效.如何以灵活的方式指定交叉连接的向量?
r ×10
mongodb ×2
rmongodb ×2
boxplot ×1
command-line ×1
data.table ×1
dendrogram ×1
ggplot2 ×1
hclust ×1
javascript ×1
rmongo ×1
shiny ×1
unc ×1