我开始使用org-mode而且我想做的事情似乎应该是可能的,但是我很难搞清楚.
让我来描述一下这个场景:我想要在远程服务器上执行一些SQL代码.我目前有一个python脚本,它将SQL代码作为字符串,并为我这样做.没有org-mode,我的工作流程就是从这样的文件开始:
echo "SELECT name, grade FROM students" >> basic_query.sql
Run Code Online (Sandbox Code Playgroud)
然后我跑了:
$ python run_query.py basic_query.sql
Run Code Online (Sandbox Code Playgroud)
要做到这一点,在org-mode设置中,我可以为SQL创建一个代码块:
#+NAME: basic_query
#+BEGIN_SRC SQL
SELECT name, grade FROM students
#+END_SRC
Run Code Online (Sandbox Code Playgroud)
然后我有一个python调用函数的代码块:
#+BEGIN_SRC python :export results
import sql_helper
query_status = sql_helper.run_query(<<basic_query>>)
#+END_SRC
Run Code Online (Sandbox Code Playgroud)
我可以用它来创建一个表,进一步处理,绘图等.注意<< >>事情是不对的,显然---这只是滥用符号表示我正在尝试做什么.
我知道这是可能的,但是提供的文档在这里:
http://code.google.com/p/augustus/
薄.
设置Web服务的文档说明:
"配置Augustus PMML使用者在其他地方有详细介绍,因此我们将讨论限制为让消费者通过HTTP接受数据所需的内容,即inputData的fromHTTP子元素."
问题在于"在其他地方非常详细"对我来说不够详细,即我正在寻找某种"你好世界"的东西.
我应该首先说一下我要做的事情:我想使用mle函数,而不必在每次我想尝试不同的模型规范时重新编写我的对数似然函数.因为mle期望一个命名的起始值列表,所以你显然不能将对数似然函数写成带参数的向量.一个简单的例子:
假设我想通过最大可能性拟合线性回归模型,首先,我忽略了我的一个预测因素:
n <- 100
df <- data.frame(x1 = runif(n), x2 = runif(n), y = runif(n))
Y <- df$y
X <- model.matrix(lm(y ~ x1, data = df))
# define log-likelihood function
ll <- function(beta0, beta1, sigma){
beta = matrix(NA, nrow=2, ncol=1)
beta[,1] = c(beta0, beta1)
-sum(log(dnorm(Y - X %*% beta, 0, sigma)))
}
library(stats4)
mle(ll, start = list(beta0=.1, beta1=.2, sigma=1)
Run Code Online (Sandbox Code Playgroud)
现在,如果我想要适合不同的模型,请说:
m <- lm(y ~ x1 + x2, data = df)
Run Code Online (Sandbox Code Playgroud)
我无法重新使用我的对数似然函数 - 我必须重新编写它以获得beta3参数.我想做的是:
ll.flex <- function(theta){
# theta is …Run Code Online (Sandbox Code Playgroud) 例如,如果运行script.A:
library(ggplot2)
a <- 12
Run Code Online (Sandbox Code Playgroud)
然后 script.B
library(ggplot2)
b <- runif(100)
qplot(b)
Run Code Online (Sandbox Code Playgroud)
我能够告诉它script.A实际上没有使用ggplot2,而是script.B.
我正在尝试在ggplot2中创建一个多面点图,但无法让内部面板类别以我想要的顺序出现.绘制圆点图的代码是:
g <- ggplot(df2, aes(x=Y, y=label)) + geom_point()
g <- g + facet_grid(incentive ~ ., scale="free")
g <- g + geom_errorbarh(aes(xmax = Y + se, xmin = Y - se))
g <- g + geom_vline(xintercept=1/6, linetype=2, colour="red")
g <- g + opts(title="% Subjects Choosing Non-Focal Image",
strip.text.y = theme_text()
) + xlab("%") + ylab("Groups")
print(g)
Run Code Online (Sandbox Code Playgroud)
情节的问题在于,在"仅限货币"方面,1美分和5美分类别的顺序错误.问题似乎不是因素本身的顺序,如:
> levels(df2$label)
[1] "0" "1" "1 cent" "5 cent" "6"
>
Run Code Online (Sandbox Code Playgroud)

更新:订购因子似乎不会改变绘图顺序,即使用label3绘图,其中:
df2 $ label3 1 0 1 1分5分6
级别:0 <1 <1分<5分<6
>str(df2$label3) …Run Code Online (Sandbox Code Playgroud) 当虚拟变量的数量导致模型矩阵超过R最大向量长度时,是否有一种简单的方法可以在R中进行固定效应回归?例如,
> m <- lm(log(bid) ~ after + I(after*score) + id, data = data)
Error in model.matrix.default(mt, mf, contrasts) :
cannot allocate vector of length 905986769
Run Code Online (Sandbox Code Playgroud)
其中id是一个因子(并且是导致上述问题的变量).
我知道我可以通过并取消所有数据,但这会抛出标准错误(是的,你可以用手动计算SE的"df"调整,但我想最小化我的概率引入新的错误.我看过plm软件包,但它似乎只针对具有时间组件的经典面板数据而设计,这不是我的数据结构.
假设我们有买家和卖家试图在市场中找到对方.买家可以用关键字标记他们的需求; 卖家也可以为他们卖的东西做同样的事情.我有兴趣根据两个关键字集找到根据特定买方的相关性对卖家进行排名的算法.
这是一个例子:
buyer_keywords = {"furry", "four legs", "likes catnip", "has claws"}
Run Code Online (Sandbox Code Playgroud)
然后我们有两个潜在的卖家,我们需要根据其相关性对订单进行排名:
seller_keywords[1] = {"furry", "four legs", "arctic circle", "white"}
seller_keywords[2] = {"likes catnip", "furry",
"hates mice", "yarn-lover", "whiskers"}
Run Code Online (Sandbox Code Playgroud)
如果我们只使用关键字的交集,我们就不会有太多歧视:两个关键字都相交.如果我们将交集计数除以集合联合的大小,则卖方2实际上会因为关键字数量更多而变得更糟.这似乎会为任何不纠正关键字集大小的方法引入自动惩罚(我们绝对不想惩罚添加关键字).
为了对问题采取更多结构,假设我们对关键字属性的强度有一些真实的衡量标准(每个卖方必须加1),例如:
seller_keywords[1] = {"furry":.05,
"four legs":.05,
"arctic circle":.8,
"white":.1}
seller_keywords[2] = {"likes catnip":.5,
"furry":.4,
"hates mice":.02,
"yarn-lover":.02,
"whiskers":.06}
Run Code Online (Sandbox Code Playgroud)
现在我们可以总结命中的价值:所以现在卖家1只获得.1的得分,而卖家2的得分为.9.到目前为止,这么好,但现在我们可能会让第三个卖家拥有一个非常有限的非描述性关键字集:
seller_keywords[3] = {"furry":1}
Run Code Online (Sandbox Code Playgroud)
对于他们唯一关键字的任何打击,这会将他们弹到顶部,这是不好的.
无论如何,我的猜测(和希望)是这是一个相当普遍的问题,并且存在具有已知优势和局限性的不同算法解决方案.这可能是CS101中涵盖的内容,所以我认为这个问题的一个好答案可能只是相关参考文献的链接.
我有这个项目,我想为各种不同的数据框制作相同的图.我想我可以通过编写一个将数据框作为输入然后返回图形矢量的函数来做到这一点 - 就像这样:
df <- data.frame(x = runif(100), y = runif(100))
plot.list <- function(df){
g1 <- qplot(x, y, data = df)
g2 <- qplot(x, x + y, data = df)
c(g1, g2)
}
Run Code Online (Sandbox Code Playgroud)
我想这样做:
print(plot.list(df)[1])
Run Code Online (Sandbox Code Playgroud)
获得与我完成相同的结果:
print(qplot(x,y, data = df))
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这不起作用 - 它似乎打印出情节所基于的数据框(?).我的猜测是,我误解了关于对象在R中的工作原理或者ggplot2图的性质.感谢您的任何建议(或者建议我采取更好的方法来做我想做的事情).
假设我编写的函数不接受任何输入但返回随机变量,例如,
example.f <- function() runif(1, 0, 1)
Run Code Online (Sandbox Code Playgroud)
如果我想从这个函数得到一个长度为100的结果向量,我不能这样做:
rep(example.f(), 100)
Run Code Online (Sandbox Code Playgroud)
因为它只是重复第一个返回值.我可以这样做,具有匿名功能:
sapply(1:100, function(x) example.f())
Run Code Online (Sandbox Code Playgroud)
但这让我觉得有点不雅.还有另外一种方法吗?
我试图在两个具有相同预测变量的线性模型的回归量上的系数的ggplot2中制作一个多面图.我构建的数据框是这样的:
r.together>
reg coef se y
1 (Intercept) 5.068608671 0.6990873 Labels
2 goodTRUE 0.310575129 0.5228815 Labels
3 indiaTRUE -1.196868662 0.5192330 Labels
4 moneyTRUE -0.586451273 0.6011257 Labels
5 maleTRUE -0.157618168 0.5332040 Labels
6 (Intercept) 4.225580743 0.6010509 Bonus
7 goodTRUE 1.272760149 0.4524954 Bonus
8 indiaTRUE -0.829588862 0.4492838 Bonus
9 moneyTRUE -0.003571476 0.5175601 Bonus
10 maleTRUE 0.977011737 0.4602726 Bonus
Run Code Online (Sandbox Code Playgroud)
"y"列是模型的标签,reg是回归量,coef和se是您的想法.
我想绘图:
g <- qplot(reg, coef, facets=.~y, data = r.together) + coord_flip()
Run Code Online (Sandbox Code Playgroud)
但当我尝试显示情节时,我得到:
> print(g)
Error in names(df) <- output :
'names' attribute [2] …Run Code Online (Sandbox Code Playgroud) 对于学术论文中的回归结果表来说,通常的做法是有一行描述估计模型的某些特征.例如,您可能有一个行名称:"模型包含单个固定效果",然后每个关联的单元格将具有适当的是/否.
我的问题是,是否有可能在任何一个用R制作LaTeX表的工具(cf,用于制作R中的乳胶表的工具)传递表生成函数这样一行为了使这更具体,我想象有一个参数,如:
model.info.row <- list(name = "Fixed effects", values = c("Y", "N", "Y"))
Run Code Online (Sandbox Code Playgroud)
我已经阅读了memisc mtable和toLaTeX文档,并没有看到任何看起来能够做到这一点的东西---不确定其他软件包/方法,但这似乎是一个常见的用例,我怀疑有一些做法这个.