我想知道我是否可以使用knitrmarkdown来创建一个动态报告,其中包含源自当前工作空间的对象.再现性不是问题.我也在这里读了这篇非常好的帖子.
但我仍然收到一条错误消息,抱怨无法找到特定对象.
1)假设我打开一个新的降价文档并保存.
2)编写一个引用lm我工作区中某个对象的块.呼叫summary(mylmobject)
3)编织它.
遗憾的是,生成了报告,但无法显示回归输出,因为无法找到该对象.注意,如果我只是将对象保存到.Rdata然后直接从markdown文件加载它,它通常工作.
有没有办法在当前工作区中使用R markdown中的对象?这对于非R人在继续工作的同时显示一些输出会非常好.
我有一块显示NAs,但我无法弄明白.
try(na.fail(x))
> Error in na.fail.default(x) : missing values in object
# display NAs
myvector[is.na(x)]
# returns
NA NA NA NA
Run Code Online (Sandbox Code Playgroud)
我从这个NA矢量的长度中得到的唯一的东西,当我试图跟踪我的代码中的错误导致的NA时实际上没有太大帮助.如何获得NA元素的索引?
我也尝试过:
subset(x,is.na(x))
Run Code Online (Sandbox Code Playgroud)
这具有相同的效果.
编辑:
y <- complete.cases(x)
x[!y]
# just returns another
NA NA NA NA
Run Code Online (Sandbox Code Playgroud) 我知道还有其他工具,比如awstats或splunk,但是我想知道是否在R中进行了一些严肃的(网络)服务器日志文件分析.我可能不是第一个想到在R中做这个,但是R还有很好的可视化功能和漂亮的空间包.你知道吗?或者是否有一个R包/代码来处理可以构建的最常见的日志文件格式?或者这只是一个非常糟糕的主意?
我读了这个关于重命名对象的基本问题和@Shane对它的回答,指着我懒惰的评价.现在我想知道是否assign也懒得评价.就像这里一样:
assign("someNewName",someOldObject)
rm(someOldObject)
Run Code Online (Sandbox Code Playgroud)
为什么我想知道这样做的原因是以下用例:假设我有10K + R对象各自有两个属性叫originalName和additionalName.现在我想编写一个函数,可以有效地让用户从一个名称切换到另一个名称,而不会丢失这两个属性.粗略喜欢这个......
编辑:基于@Hadley的输入我改变了我的代码.
switchObjectName <- function(x) {
n1 <- attributes(x)$originalName
n2 <- attributes(x)$additionalName
objName <- deparse(substitute(x))
if(objName == n1) {
delayedAssign(n2,x,assign.env=.GlobalEnv)
} else {
delayedAssign(n1,x,assign.env=.GlobalEnv)
}
rm(list=c(objName),envir=.GlobalEnv)
}
Run Code Online (Sandbox Code Playgroud)
这种方法效果很好,但是我说这rm句话是正确的.rm(objName,envir=.GlobalEnv)虽然objName肯定是一个字符因为它是结果,但我试过但是无法使它工作deparse(substitute(x).
我有字符串的向量,并希望创建一个固定的字符串.较短的字符串应填充白色空格.例如:
c("fjdlksa01dada","rau","sjklf")
sprintf("%8s")
# returns
[1] "fjdlksa01dada" " rau" " sjklf"
Run Code Online (Sandbox Code Playgroud)
但是如何在字符串的END处获得额外的空格?
请注意,我从gdata包中听说过write.fwf 非常好但在这种情况下没有多大帮助,因为我需要为过时的旧程序编写一个非常具体的非标准格式.
我想使用一个使用标准deparse(substitute(x))技巧的函数lapply.不幸的是,我只是得到了循环的论证.这是我完全没用的可重复的例子:
# some test data
a <- 5
b <- 6
li <- list(a1=a,b2=b)
# my test function
tf <- function(obj){
nm <- deparse(substitute(obj))
res <- list(myName=nm)
res
}
tf(a)
#returns
$myName
[1] "a"
Run Code Online (Sandbox Code Playgroud)
这很好.如果我使用lapply我得到[[1L]]或x匿名函数的参数.
lapply(li,function(x) tf(x))
# returns
$a1
$a1$myName
[1] "x"
$b2
$b2$myName
[1] "x"
Run Code Online (Sandbox Code Playgroud)
有没有办法获得以下?
$a1
$a1$myName
[1] "a1"
$b2
$b2$myName
[1] "b1"
Run Code Online (Sandbox Code Playgroud)
如果有更一般的东西deparse(substitute(x)),lapply我也渴望知道.
编辑:问题,而不是使用接受多个参数的匿名函数,因此可以使用对象的名称和对象本身不起作用,因为该tf函数只接受一个参数.所以这在这里不起作用......
简单问题:如何返回MySQL表的字段类型.我知道describe或show column但我只是想返回那个单一的参数.例如:
SELECT fieldtype(mycol) FROM mytable
# should return INT or integer for example
Run Code Online (Sandbox Code Playgroud) 我想将一个表中的所有NULL字段更新为0.当然
UPDATE mytable SET firstcol=0 WHERE firstcol IS NULL
Run Code Online (Sandbox Code Playgroud)
会做的.但我想知道是否有更智能的解决方案,而不仅仅是c&p每行的这一行.
我想知道在R中创建ts时如何使用已存在的日期字段.有时候你只有一个日期才能拥有一个ts对象,例如
x <- as.Date("2008-01-01") + c(30,60,90,120,150)
# add some data to it
df = data.frame(datefield=x,test=1:length(x))
Run Code Online (Sandbox Code Playgroud)
现在,有没有办法在创建ts对象时使用df的日期字段作为索引?因为:
ts(df$test,start=c(2008,1,2),frequency=12)
Run Code Online (Sandbox Code Playgroud)
(显然)完全忽略了我已有的日期信息.使用像acf这样的ts方法是我喜欢把它变成ts对象的原因.我通常每月使用季度时间序列......
我使用NeweyWest标准错误来纠正我的lm() / dynlm()输出.例如:
fit1<-dynlm(depvar~covariate1+covariate2)
coeftest(fit1,vcov=NeweyWest)
Run Code Online (Sandbox Code Playgroud)
系数以我想要的方式显示,但不幸的是,我放弃了所有回归输出信息,如R平方,F-Test等,通过摘要显示.所以我想知道如何在相同的摘要输出中显示强大的se和所有其他内容.
有没有办法在一次通话中获取所有内容或覆盖"旧"估算值?我敢打赌,我只是错过了一些错误的东西,但是在扫描输出时这确实很重要.
测试例,取自?dynlm.
require(dynlm)
require(sandwich)
data("UKDriverDeaths", package = "datasets")
uk <- log10(UKDriverDeaths)
dfm <- dynlm(uk ~ L(uk, 1) + L(uk, 12))
#shows R-squared, etc.
summary(dfm)
#no such information
coeftest(dfm, vcov = NeweyWest)
Run Code Online (Sandbox Code Playgroud)
顺便说一句:同样适用 vcovHC
r ×8
mysql ×2
assign ×1
fieldtype ×1
formatting ×1
indexing ×1
knitr ×1
lapply ×1
lm ×1
output ×1
printf ×1
rstudio ×1
sql-update ×1
substitution ×1
summary ×1
time-series ×1