小编Jer*_*oen的帖子

使文本在任意背景图像上可读

我正在使用新Bootstrap 3 RC2中的轮播组件.但是,我注意到在实践中,标题通常是不可读的,因为我的图片颜色非常多.之前的Bootstrap 2.3使用黑色渐变作为标题,但似乎已被删除.

用CSS设置我的标题样式以使它们对任意图像可读的方法是什么?我尝试过使用阴影和背景颜色,但这只会让人非常难看.

这里有一些示例代码:http://bit.ly/1eX8Tz9

css fonts carousel twitter-bootstrap twitter-bootstrap-3

9
推荐指数
1
解决办法
7428
查看次数

R中字符向量的快速转义/去除

要在json中编码字符串,需要使用反斜杠转义几个保留字符,并且每个字符串都需要用双引号括起来.目前,该jsonlite包使用deparse基R中的函数实现了这个:

deparse_vector <- function(x) {
  stopifnot(is.character(x))
  vapply(x, deparse, character(1), USE.NAMES=FALSE)
}
Run Code Online (Sandbox Code Playgroud)

这样做的诀窍:

test <- c("line\nline", "foo\\bar", "I said: \"hi!\"")
cat(deparse_vector(test))
Run Code Online (Sandbox Code Playgroud)

然而deparse,对于大型载体来说,结果却很慢.另一种实现是gsub单独为每个角色:

deparse_vector2 <- function(x) {
  stopifnot(is.character(x))
  if(!length(x)) return(x)
  x <- gsub("\\", "\\\\", x, fixed=TRUE)
  x <- gsub("\"", "\\\"", x, fixed=TRUE)
  x <- gsub("\n", "\\n", x, fixed=TRUE)
  x <- gsub("\r", "\\r", x, fixed=TRUE)
  x <- gsub("\t", "\\t", x, fixed=TRUE)
  x <- gsub("\b", "\\b", x, fixed=TRUE)
  x <- gsub("\f", "\\f", x, fixed=TRUE)
  paste0("\"", x, …
Run Code Online (Sandbox Code Playgroud)

regex r escaping gsub

9
推荐指数
2
解决办法
544
查看次数

多个库中的相同R包

如果一个软件包安装在多个库中会发生什么?例如,在Debian/Ubuntu中,可以通过apt-get安装debianized包,然后直接从CRAN安装相同包的更新版本.使用library()时,是否会加载最新的包,还是依赖于.libPaths()的顺序?

r cran

8
推荐指数
2
解决办法
485
查看次数

将基于记录的列表/对象展平为数据帧

编辑:这个问题已经过时了.所述jsonlite软件包自动变平.

我正在处理具有基于记录的编码的在线数据流,通常使用JSON.API文档中已知对象的结构(即JSON中的名称),但是,值大多是可选的,并不存在于每个记录中.列表可以包含新列表,结构有时非常深.以下是一些GPS数据的一个非常简单的例子:http://pastebin.com/raw.php?i = yz6z9t25.请注意,在较低的行中,"l"由于没有GPS信号,对象丢失.

我正在寻找一种优雅的方法将这些对象展平成数据帧.我目前正在使用这样的东西:

library(RJSONIO)
library(plyr)

obj <- fromJSON("http://pastebin.com/raw.php?i=yz6z9t25", simplifyWithNames=FALSE, simplify=FALSE)
flatdata <- lapply(obj$data, as.data.frame);
mydf <- rbind.fill(flatdata)
Run Code Online (Sandbox Code Playgroud)

这样可以完成工作,但是速度慢且容易出错.这种方法的一个问题是我没有使用我对数据中结构(对象名称)的了解; 相反,它是从数据推断出来的.当每个记录中都没有某个属性时,这会导致问题.在这种情况下,它根本不会出现在数据框中,而不是具有NA值的列.这可能导致下游问题.例如,我需要处理位置时间戳:

mydf$l.t <- structure(mydf$l.t/1000, class="POSIXct")
Run Code Online (Sandbox Code Playgroud)

但是,如果数据集中l$t没有对象,则会导致错误.此外无论是as.data.framerbind.fill做事情很慢.示例数据集相对较小.有关更好实施的建议吗?一个强大的解决方案总是会产生一个数据帧,该数据帧具有相同顺序的相同列,并且只有行数变化.

编辑:在具有更多元数据的数据集下方.它的尺寸更大,嵌套更深:

obj <- fromJSON("http://www.stat.ucla.edu/~jeroen/files/output.json", simplifyWithNames=FALSE, simplify=FALSE)
Run Code Online (Sandbox Code Playgroud)

r

8
推荐指数
2
解决办法
2041
查看次数

在Mongo中分箱和制表(唯一/计数)

我正在寻找一种使用Mongo生成一些摘要统计数据的方法.假设我有一个包含许多表单记录的集合

{"name" : "Jeroen", "gender" : "m", "age" :27.53 }
Run Code Online (Sandbox Code Playgroud)

现在我想得到性别和年龄的分布.假设性别,只有价值"m""f".在我的收藏中获得男性和女性总数最有效的方法是什么?

而对于年龄,有没有办法做一些'binning'并给我一个像汇总的直方图; 即年龄在间隔内的记录数量:[0, 2), [2, 4), [4, 6) ...等等?

mongoose mongodb nosql

8
推荐指数
2
解决办法
3497
查看次数

在R中解析ISO8601

R中是否存在将ISO8601字符串解析为POSIXt对象的现有实现?ISO8601规范允许以各种(非重叠)格式打印日期/时间,因此可能需要做一些正则表达式魔术来检测格式并将其输入strptime.

正确地执行此操作实际上可能非常具有挑战性,但是检测最常见格式的内容已经非常有用.我很难想象我是第一个遇到这种情况的人,但我很难找到好的实施方案.

datetime r date posixct

8
推荐指数
1
解决办法
4107
查看次数

重定向后从XHR对象获取最终URL

假设我使用ajax(例如通过jQuery)对实现PRG模式的API执行POST请求.因此它会重定向我:

POST /some/api
HTTP/1.1 303 See Other
Location: /some/other/location
Run Code Online (Sandbox Code Playgroud)

然后jQuery将自动跟随重定向并执行:

GET /some/other/location
Run Code Online (Sandbox Code Playgroud)

然后使用后一个请求的输出调用响应处理程序(成功,失败等).但是,如何/some/other/location在javascript中读取最终资源(在本例中)的位置?

ajax jquery redirect

8
推荐指数
3
解决办法
1万
查看次数

卸载程序包和所有依赖项

我试图卸载包含所有依赖项的包.我遇到的问题是卸载依赖项的顺序.因为依赖项是递归的,所以它们只能在依赖关系树中从底部向上卸载.

在R中有一种简单或原生的方式来实现这一目标吗?我想要完成的第一步:

eval_current <- function(expr, envir=parent.frame(), timeout=60){  
  #set the timeout
  setTimeLimit(elapsed=timeout, transient=TRUE);

  #currently loaded packages
  currentlyattached <- search();
  currentlyloaded <- loadedNamespaces();

  on.exit({
    #reset time limit
    setTimeLimit(cpu=Inf, elapsed=Inf, transient=FALSE);

    #try to detach packages that were attached during eval
    nowattached <- search();
    todetach <- nowattached[!(nowattached %in% currentlyattached)];
    for(i in seq_along(todetach)){
      try(detach(todetach[i], unload=TRUE, character.only=TRUE, force=TRUE));
    }

    #try to unload packages that are still loaded
    nowloaded <- loadedNamespaces(); 
    tounload <- nowloaded[!(nowloaded %in% currentlyloaded)];
    for(i in seq_along(tounload)){
      try(unloadNamespace(tounload[i]));
    }    

  });

  eval(expr, envir) 
}
Run Code Online (Sandbox Code Playgroud)

但它导致:

> …
Run Code Online (Sandbox Code Playgroud)

r devtools package cran

8
推荐指数
1
解决办法
4794
查看次数

如何使用dplyr进行编程

我喜欢dplyr数据操作,但我不明白如何使用它进行编程.例如,要重新调整某些变量,我们可以:

mutate(cars, speed.scaled = scale(speed), dist.scaled = scale(dist))
Run Code Online (Sandbox Code Playgroud)

很酷.但现在假设我想编写一个mutate用于缩放数据框中所有变量的函数.我如何创建...参数?我能想出的最好的事情是:

fnargs <- lapply(names(cars), function(x){call("scale", as.name(x))})
names(fnargs) <- paste0(names(cars), ".scaled")
do.call(mutate, c(.data=as.name("cars"), fnargs))
Run Code Online (Sandbox Code Playgroud)

或者是否有一个更加编程友好的替代界面?

r cran dplyr

8
推荐指数
1
解决办法
1907
查看次数

字符串中的Unescape unicode

有一个长期的错误RJSONIO解析包含Unicode转义序列JSON字符串.似乎需要修复bug,libjson这可能不会很快发生,因此我正在寻找在R中创建一个解决方法,\uxxxx在将它们提供给json解析器之前对其进行unescapes 序列.

一些上下文:json数据总是unicode,utf-8默认使用,因此通常不需要转义.但由于历史原因,json确实支持转义的unicode.因此json数据

{"x" : "Zürich"}
Run Code Online (Sandbox Code Playgroud)

{"x" : "Z\u00FCrich"}
Run Code Online (Sandbox Code Playgroud)

是等价的,并且在解析时应该产生完全相同的输出.但无论出于何种原因,后者都不起作用RJSONIO.另外一个混乱是由于R本身也支持转义的unicode.因此,当我们输入"Z\u00FCrich"R控制台时,它会自动正确转换为"Zürich".为了获得实际的json字符串,我们需要转义反斜杠本身,它是json中unicode转义序列的第一个字符:

test <- '{"x" : "Z\\u00FCrich"}'
cat(test)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:在R中给出一个大的json字符串,我怎样才能解除所有转义的unicode序列?即我如何\uxxxx用相应的unicode字符替换所有出现的?同样,\uxxxx这里表示一个6个字符的实际字符串,以反斜杠开头.所以一个unescape函数应该满足:

#Escaped string
escaped <- "Z\\u00FCrich"

#Unescape unicode
unescape(escaped) == "Zürich"

#This is the same thing
unescape(escaped) == "Z\u00FCrich"
Run Code Online (Sandbox Code Playgroud)

可能使事情复杂化的一件事是,如果反斜杠本身在json中使用另一个反斜杠进行转义,则它不是 unicode转义序列的一部分.例如,unescape还应满足:

#Watch out for escaped backslashes
unescape("Z\\\\u00FCrich") == "Z\\\\u00FCrich"
unescape("Z\\\\\\u00FCrich") == "Z\\\\ürich"
Run Code Online (Sandbox Code Playgroud)

regex unicode json r utf-8

8
推荐指数
1
解决办法
1133
查看次数