我试图在Python 2.6中使用re在一系列更大的数字中找到每10个数字系列的数字.
我很容易就能抓住没有重叠的比赛,但我想要数字系列中的每场比赛.例如.
在"123456789123456789"
我应该得到以下列表:
[1234567891,2345678912,3456789123,4567891234,5678912345,6789123456,7891234567,8912345678,9123456789]
Run Code Online (Sandbox Code Playgroud)
我发现了对"前瞻"的引用,但我看过的例子只显示了数字对而不是更大的分组,我无法将它们转换为超出两位数.
将逐项列表添加到roxygen2的适当语法是什么,例如,在@details部分?我可以创建一个乳胶列表环境吗?
似乎简单地忽略了换行符,即
#' @details text describing parameter inputs in more detail
#'
#' parameter 1: stuff
#'
#' parameter 2: stuff
Run Code Online (Sandbox Code Playgroud)
谢谢!
(有些相关的问题:在dplyr的重命名函数中输入新的列名作为字符串)
在dplyrchain(%>%)的中间,我想用旧名称的函数替换多个列名(使用tolower或gsub等)
library(tidyr); library(dplyr)
data(iris)
# This is what I want to do, but I'd like to use dplyr syntax
names(iris) <- tolower( gsub("\\.", "_", names(iris) ) )
glimpse(iris, 60)
# Observations: 150
# Variables:
# $ sepal_length (dbl) 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6,...
# $ sepal_width (dbl) 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4,...
# $ petal_length (dbl) 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4,...
# $ …Run Code Online (Sandbox Code Playgroud) 我想在ggplot2中创建一个干净版本的文本标签散点图.目标是直观地表示与约25个项目相关联的增加值.我已经在使用"position_jitter"了,但我想知道我能不能做得更好.
这是一些模拟数据:
title <- rep("A Really Rather Long Text Label", 25)
value <- runif(25, 1,10)
spacing <- seq(1:25)
df <- data.frame(title, value, spacing, stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)
以下是生成图表的代码:
library(ggplot2)
myplot <- ggplot(data=df, aes(x=spacing, y=value, label = title)) +
geom_text(aes(colour = value),
size = 2.5, fontface = "bold",
vjust = 0,
position = position_jitter(width=5, height=0)) +
theme_bw() +
scale_x_continuous(limits = c(-5, 30))+
scale_colour_gradient(low = "#6BAED6", high = "#08306B") +
theme(axis.title.x = element_blank(),
axis.ticks = element_blank(),
axis.text.x = element_blank(),
legend.position = "none")
myplot …Run Code Online (Sandbox Code Playgroud) 我一直致力于二维连续数据的可视化项目.这是您可以用来研究2D地图上的高程数据或温度模式的类型.从本质上讲,它实际上是一种将三维平面化为二维加彩色的方法.在我的特定研究领域,我实际上并没有处理地理高程数据,但这是一个很好的比喻,所以我会在这篇文章中坚持下去.
无论如何,在这一点上,我有一个"连续颜色"渲染器,我很满意:

渐变是标准色轮,其中红色像素表示具有高值的坐标,紫色像素表示低值.
底层数据结构使用了一些非常聪明的(如果我自己这么说的话)插值算法,可以任意深度缩放到地图的细节.
在这一点上,我想绘制一些地形轮廓线(使用二次贝塞尔曲线),但我还没有找到任何描述找到这些曲线的有效算法的好文献.
为了让您了解我正在考虑的内容,这里是一个穷人的实现(渲染器只要遇到与轮廓线相交的像素就使用黑色RGB值):

但是,这种方法存在一些问题:
具有更陡峭斜率的图形区域导致更薄(并且经常断裂)的拓扑线.理想情况下,所有拓扑线应该是连续的.
具有更平坦斜率的图形区域导致更宽的拓扑线(并且通常是整个黑度区域,尤其是在渲染区域的外周边处).
因此,我正在研究一种矢量绘制方法,以获得那些漂亮,完美的1像素厚曲线.算法的基本结构必须包括以下步骤:
在我想要绘制地形线的每个离散高程处,找到一组坐标,其中该坐标处的高程非常接近(给定任意epsilon值)到所需高程.
消除冗余点.例如,如果三个点处于完全直线,则中心点是多余的,因为可以在不改变曲线形状的情况下消除它.同样,对于贝塞尔曲线,通常可以通过调整相邻控制点的位置来消除cetain锚点.
将剩余的点组装成序列,使得两个点之间的每个段近似于高程中性轨迹,并且使得没有两个线段跨越路径.每个点序列必须创建一个闭合多边形,或者必须与渲染区域的边界框相交.
对于每个顶点,找到一对控制点,使得结果曲线相对于步骤#2中消除的冗余点呈现最小误差.
确保在当前渲染比例下可见的地形的所有要素都由适当的拓扑线表示.例如,如果数据包含高海拔的尖峰,但直径极小,则仍应绘制拓扑线.如果垂直特征的特征直径小于图像的整体渲染粒度,则只应忽略垂直特征.
但即使在这些限制条件下,我仍然可以想到几种不同的启发式方法来寻找线条:
在渲染边界框中找到高点.从那个高点开始,沿着几条不同的轨迹下坡.只要遍历线超过高程阈值,请将该点添加到特定于高程的存储桶.当遍历路径达到局部最小值时,改变航向并向上行驶.
沿着渲染区域的矩形边界框执行高分辨率遍历.在每个海拔阈值处(以及在拐点处,斜坡反转方向的任何位置),将这些点添加到特定于海拔的铲斗中.完成边界遍历后,从这些桶中的边界点开始向内追踪.
扫描整个渲染区域,以稀疏的规则间隔进行高程测量.对于每次测量,使用它与高程阈值的接近度作为决定是否对其邻居进行插值测量的机制.使用这种技术可以更好地保证整个渲染区域的覆盖范围,但是很难将结果点组合成一个合理的构造路径的顺序.
所以,这些是我的一些想法......
在深入研究实现之前,我想看看StackOverflow上是否有其他人遇到过这类问题的经验,并且可以为准确有效的实现提供指导.
编辑:
我对ellisbben提出的"Gradient"建议特别感兴趣.而我的核心数据结构(忽略一些优化插值快捷键)可以表示为一组2D高斯函数的总和,这是完全可微的.
我想我需要一个数据结构来表示一个三维斜率,以及一个用于计算任意点的斜率矢量的函数.在我的头顶,我不知道该怎么做(虽然它看起来应该很容易),但如果你有一个解释数学的链接,我会非常感激!
更新:
由于ellisbben和Azim的出色贡献,我现在可以计算场中任意点的轮廓角.绘制真正的地形线将很快跟随!
这里有更新的渲染图,有和没有我一直在使用的基于ghetto栅格的topo-renderer.每个图像包括一千个随机采样点,由红点表示.该点处的轮廓角由白线表示.在某些情况下,在给定点处不能测量斜率(基于插值的粒度),因此红点在没有相应的轮廓线的情况下发生.
请享用!
(注意:这些渲染使用与之前渲染不同的表面形貌 - 因为我在每次迭代时随机生成数据结构,而我是原型 - 但核心渲染方法是相同的,所以我相信你会得到这个想法.)


这是一个有趣的事实:在这些渲染的右侧,你会看到一堆完美的水平和垂直角度的奇怪轮廓线.这些是插值过程的伪像,它使用插值器网格来减少执行核心渲染操作所需的计算次数(约500%).所有这些奇怪的轮廓线出现在两个插值器网格单元之间的边界上.
幸运的是,这些文物实际上并不重要.尽管在斜率计算期间可检测到伪像,但最终渲染器将不会注意到它们,因为它在不同的位深度处操作.
再次更新:
Aaaaaaaand,作为我睡觉前的最后一次放纵,这里是另一对效果图,一个是老式的"连续色彩"风格,另一个是20,000个渐变样本.在这组渲染中,我已经消除了点样本的红点,因为它不必要地使图像混乱.
在这里,由于插补器集合的网格结构,您可以真正看到我之前提到的那些插值工件.我应该强调的是,这些伪像在最终轮廓渲染中将是完全不可见的(因为任何两个相邻内插器单元之间的幅度差异小于渲染图像的位深度).
好胃口!!


language-agnostic algorithm bezier visualization topographical-lines
我已经删除了y轴上的标签,因为只有相对数量非常重要.
w <- c(34170,24911,20323,14290,9605,7803,7113,6031,5140,4469)
plot(1:length(w), w, type="b", xlab="Number of clusters",
ylab="Within-cluster variance",
main="K=5 eliminates most of the within-cluster variance",
cex.main=1.5,
cex.lab=1.2,
font.main=20,
yaxt='n',lab=c(length(w),5,7), # no ticks on y axis, all ticks on x
family="Calibri Light")
Run Code Online (Sandbox Code Playgroud)

但是,抑制这些刻度标签会在y轴标签("簇内方差")和y轴之间留下大量空白.有没有办法轻推它?如果我以某种方式设置(看不见的)刻度标记去里面的轴,将轴标签沿轴平息?
我有两个数据框:
df1
x1 x2
1 a
2 b
3 c
4 d
Run Code Online (Sandbox Code Playgroud)
和
df2
x1 x2
2 zz
3 qq
Run Code Online (Sandbox Code Playgroud)
我想根据df1 $ x1和df2 $ x2之间的条件匹配,用df2 $ x2中的值替换df1 $ x2中的某些值,以产生:
df1
x1 x2
1 a
2 zz
3 qq
4 d
Run Code Online (Sandbox Code Playgroud) 我有一个数据超过300万条记录,其中start.time和end.time是两个变量.前10个障碍如下:
start.date start.time end.date end.time
1 2012-07-13 15:01:32 2012-07-13 15:02:42
2 2012-07-05 18:26:31 2012-07-05 18:27:19
3 2012-07-14 20:23:21 2012-07-14 20:24:11
4 2012-07-29 16:09:54 2012-07-29 16:10:48
5 2012-07-21 14:58:32 2012-07-21 15:00:17
6 2012-07-04 15:36:31 2012-07-04 15:37:11
7 2012-07-22 18:28:31 2012-07-22 18:28:50
8 2012-07-09 21:08:42 2012-07-09 21:09:02
9 2012-07-05 09:44:52 2012-07-05 09:45:05
10 2012-07-02 18:50:47 2012-07-02 18:51:38
Run Code Online (Sandbox Code Playgroud)
我需要计算start.time和end.time之间的差异.
我使用了以下代码:
mbehave11$diff.time <- difftime(mbehave11$end.time, mbehave11$start.time, units="secs")
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误:
Error in as.POSIXlt.character(x, tz, ...) :
character string is not in a standard unambiguous format
In addition: …Run Code Online (Sandbox Code Playgroud) 我必须处理足够大的xml文档(高达1GB)并使用python解析它们.我正在使用iterparse()函数(SAX样式解析).
我关注的是,假设你有一个这样的xml
<?xml version="1.0" encoding="UTF-8" ?>
<families>
<family>
<name>Simpson</name>
<members>
<name>Homer</name>
<name>Marge</name>
<name>Bart</name>
</members>
</family>
<family>
<name>Griffin</name>
<members>
<name>Peter</name>
<name>Brian</name>
<name>Meg</name>
</members>
</family>
</families>
Run Code Online (Sandbox Code Playgroud)
问题是,当然知道我什么时候得到一个姓氏(如辛普森一家),当我得到一个家庭成员的名字时(例如荷马)
到目前为止我一直在做的是使用"开关",告诉我是否在"成员"标签内,代码看起来像这样
import xml.etree.cElementTree as ET
__author__ = 'moriano'
file_path = "test.xml"
context = ET.iterparse(file_path, events=("start", "end"))
# turn it into an iterator
context = iter(context)
on_members_tag = False
for event, elem in context:
tag = elem.tag
value = elem.text
if value :
value = value.encode('utf-8').strip()
if event == 'start' :
if tag == …Run Code Online (Sandbox Code Playgroud) 作为一个Rails开发人员,我觉得有点愚蠢地问这个问题,但希望我会学到一些新东西,有人可以让我摆脱困境!在我的rails应用程序中,我一直使用(其他人)宝石,我也使用来自社区或我自己的插件.
我理解使用宝石而不是插件的好处,因为它们是版本,分段,系统范围,更易于管理和共享等等,但我真的不知道如何为我的rails应用程序制作宝石!?
你总是从一个插件开始并将其转换为宝石,我已经看到了"将它打包为宝石"这几个字.另外我正在考虑构建的宝石在普通的ruby程序中并不好用,它只对rails应用程序有用.我甚至不确定它的语义是否有意义,'RubyGem'只适用于rails应用程序!?
我想创建一个gem(如果这是我应该使用的?),为我的rails应用程序提供一个独立的功能.它需要添加数据库迁移,新路由并提供控制器和视图或有用的视图助手.我知道我可以通过一个插件来实现这个目标,但是我想知道如何/为什么要将它作为'Ruby Gem'来实现?