小编use*_*795的帖子

在文本编辑器中集成R linter的选项有哪些?lint in svTools,codetools等

我正在尝试使用l的linter扩展SublimeLinter .SublimeLinter在Sublime Text 2中为许多语言提供自动linting.目标是在背景中运行linter并突出显示编码错误或编码风格错误的行.

目前,我正在使用包中的lint功能svTools,它正在工作.然而,结果并不令人满意.linter捕获许多)行或许多}但它没有检测到未定义变量的使用,没有编码风格等.

还有其他选择吗?我知道这次讨论的写作A R皮棉程序,R CMD checkcodetools.但是我如何运行R CMD check普通的.r文件而不是包?飞行短绒应该使用哪些选项?还有其他想法吗?

谢谢!

编辑:该lint函数在检测错误的位置时似乎也不是很好,或者它基本上总是指示第1列.例如,在fn = function(...) { ]列中是1而不是]在结尾处.

ps:我知道这个lint函数是checkUsage()... 的包装器

coding-style r sublimetext sublimetext2

6
推荐指数
1
解决办法
1192
查看次数

如何检查表达式是否为赋值?(在回调中传递给`addTaskCallback`)

如何检查表达式是否是传递给回调的赋值addTaskCallback?回调有四个参数.传递给回调的第一个参数是"顶级任务的S语言表达式".R手册中的顶级任务回调建议您"检查表达式并确定是否进行了任何分配".但是,我如何能够始终如一地为全球环境中的任何任务做到这一点?我基本上想知道在全局环境中是否添加或更改了任何对象,并且只有在这种情况下才执行我的回调.很容易检查基本的赋值操作,例如<-或者=我不确定循环(这是一个顶级表达式),是否使用<<-运算符的条件或函数或可能的其他方法来更改全局环境中的对象.以下是包含全局环境中的分配的单个顶级操作的一些示例

# loops
for (i in 1:10) x[i] <- i
for (i in 1:10) {
    x[i] <- i
    y[i] <- i
}
# if conditions
if(cond) x <- rnorm(1000)
if(cond) {
    x <- rnorm(1000)
    y <- rnorm(1000)
}
# global assignment in loop
fn = function() x <<- rnorm(1000)
fn()
Run Code Online (Sandbox Code Playgroud)

最后是一个检查简单=<-运算符的基本示例:

eventHandler = function(expr, value, ok, visible) {
    if(class(expr) %in% c('=','<-'))
        print('assignment!')
    # as.character(expr)[2] …
Run Code Online (Sandbox Code Playgroud)

r

6
推荐指数
1
解决办法
301
查看次数

使用Python基于cite键从bibtex文件中删除特定条目

如何使用python基于引用键从bibtex文件中删除特定条目?我基本上想要一个带有两个参数的函数(bibtex文件和引用键的路径),并从文件中删除与该键对应的条目.我玩正则表达式但没有成功.我也看了一下bibtex解析器,但这似乎有点矫枉过正.在下面的骨架函数中,决定性的部分是content_modified =.

def deleteEntry(path, key):
  # get content of bibtex file
  f = open(path, 'r')
  content = f.read()
  f.close() 
  # delete entry from content string
  content_modified = 

  # rewrite file
  f = open(path, 'w')
  f.write(content_modified)
  f.close() 
Run Code Online (Sandbox Code Playgroud)

这是一个示例bibtex文件(在摘要中有空格):

@article{dai2008thebigfishlittlepond,
    title = {The {Big-Fish-Little-Pond} Effect: What Do We Know and Where Do We Go from Here?},
    volume = {20},
    shorttitle = {The {Big-Fish-Little-Pond} Effect},
    url = {http://dx.doi.org/10.1007/s10648-008-9071-x},
    doi = {10.1007/s10648-008-9071-x},
    abstract = {The big-fish-little-pond effect {(BFLPE)} refers to the theoretical …
Run Code Online (Sandbox Code Playgroud)

python regex bibtex

5
推荐指数
1
解决办法
424
查看次数

使用`sourceCpp`编译`fastLm`

我开始玩,Rcpp并希望使用该fastLm函数作为一个例子(也因为它对以后的潜在工作很有用).我知道这fastLmRcppArmadillo包的一部分,但我想用它来编译它sourceCpp.代码可以在这里找到,也在下面.我遇到的第一个问题是,我不能简单地运行sourceCpp("fastLm.cpp")R中安装和加载后RcppRcppArmadillo.我得到了这个错误error: RcppArmadillo.h: No such file or directory,然后是各种各样的东西,我想从那里得到.

第二个问题是,我认为我需要改变一些东西fastLm.cpp.我的变化也在下面,但我确信缺少或错误.我包括#include <Rcpp.h>using namespace Rcpp;// [[Rcpp::export]]该功能导出到R和我从改变的参数SEXP,以NumericVectorNumericMatrix.我不明白为什么不起作用,返回值可能有类似的调整?

fastLm.cpp

#include <RcppArmadillo.h>

extern "C" SEXP fastLm(SEXP ys, SEXP Xs) {

    Rcpp::NumericVector yr(ys);                 // creates Rcpp vector from SEXP
    Rcpp::NumericMatrix Xr(Xs);                 // creates Rcpp matrix from SEXP
    int n = Xr.nrow(), k = Xr.ncol(); …
Run Code Online (Sandbox Code Playgroud)

r rcpp

5
推荐指数
1
解决办法
1495
查看次数

等值线图:在"鼠标悬停"中改变笔划颜色显示重叠的边界

我在choropleth地图中遇到鼠标悬停事件的问题.我想突出显示边界,以便用户可以看到当前选定的功能.一切正常,期望一些边界更薄或根本不存在,大概是因为它们被渲染到相邻特征的边界之下.这是一个例子:

在此输入图像描述

一些边界是正确的,其他部分更薄,第三部分根本不存在.最近来自Mike Bostock等人的NYT地图解决了这个问题.解决办法是什么?这是我目前的mouseover代码:

.on("mouseover", function(d,i) {
  d3.select(this).transition().duration(300)
    .style({'stroke-opacity':1,'stroke':'#F00'});
})
.on("mouseout", function(d,i) { 
  d3.select(this).transition().duration(300)
    .style({'stroke-opacity':0.4,'stroke':'#eee'});
})
Run Code Online (Sandbox Code Playgroud)

maps d3.js

5
推荐指数
1
解决办法
3181
查看次数

测试几何是否具有至少一个共同的边界点,而不管内部点(不像"gTouches")

包中的gTouches函数rgeos测试"几何是否至少有一个共同的边界点,但没有内部点".我正在寻找一种方法来测试"几何具有至少一个共同的边界点",而没有与内部点相关的标准.

这是基本设置:我有两个大多数相互嵌入的shapefile.我想找到文件中的多边形,其中较小的区域位于较大区域的边界.这是一个描述我想要做的事情的图表:

plot(map2, col=NA, border='black', lwd=0.4)
plot(map1, col=NA, border='#666666', lwd=0.2, add=TRUE)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

该图显示了纽约史坦顿岛的人口普查区块.其中一个较大区域的绿色突出显示了我想要识别的块.只有那些与较大区域(粗线)共享或跨越边界的人.不是位于较大区域中间的区块.我尝试gTouches(map2,map1, byid=TRUE)rgeos包中使用with 和其他功能但没有成功.gTouches只返回FALSE可能是因为标准是"几何具有至少一个共同的边界点,但没有内部点".基本上,我正在寻找一种功能,测试"几何形状是否至少有一个共同的边界点",无论内部是什么.

后续问题是我是否可以获得相互边界的长度?

数据:您可以在此处此处下载两张地图.两者都是rds文件,所以你可以像这样打开它们:

library('rgdal')
library('rgeos')
library('sp')
map1 = readRDS('map1.rds')
map2 = readRDS('map2.rds')
Run Code Online (Sandbox Code Playgroud)

maps r

4
推荐指数
1
解决办法
591
查看次数

为什么`预测'不是通用函数?

为什么predict不是通用功能?isGeneric('predict')FALSE,但isGeneric('summary')isGeneric('print')TRUE.他们都有方法,可以列出methods('predict')等?因此predict不是这里描述的通用函数(从查看中也很明显class),但仍然根据传递给它的对象(例如predict.lmpredict.glm)调度方法.那么R调度方法有不同的方式吗?如何测试函数是否具有方法以使上述所有示例都为真?是的,我可以测试长度,methods('predict')但是对于没有方法的函数会产生警告.

r

4
推荐指数
1
解决办法
963
查看次数

dplyr和可重用的参数列表

我玩dplyr了一点,非常喜欢它.我错过了一些东西.在plyr,我能够将函数传递给ddply并重用它.

library('dplyr')
library('plyr')

fn = function(df) {
    summarise(df,
        count = length(id))
}

ddply(DF1,'group', fn)
ddply(DF2,'group', fn)
Run Code Online (Sandbox Code Playgroud)

因此,我可以将一长串记录应用于多个数据集,而无需复制所有参数summarise.在dplyr,但是,我必须这样做

dplyr::summarise(group_by(DF1,group),
    count = length(id))
dplyr::summarise(group_by(DF2,group),
    count = length(id))
Run Code Online (Sandbox Code Playgroud)

所以summarise每次都必须重复这些论点.我定义参数列表时会评估带有list('.data'=DF1,'count'=length(id))do.call不起作用length(id)的参数列表.这有什么解决方案吗?

r dplyr

4
推荐指数
1
解决办法
738
查看次数

使用dplyr的快速频率和百分比表

我一直在使用一个小tab函数,它显示了向量的频率,百分比和累积百分比.输出看起来像这样

          Freq    Percent        cum
ARSON      462 0.01988893 0.01988893
BURGLARY 22767 0.98011107 1.00000000
         23229 1.00000000         NA
Run Code Online (Sandbox Code Playgroud)

优秀的dplyr包装促使我更新功能.现在我想知道如何更快地更新版本.这是旧功能

tab = function(x,useNA =FALSE) {
  k=length(unique(x[!is.na(x)]))+1
  if (useNA) k=k+1
  tab=array(NA,c(k,3))
  colnames(tab)=c("freq.","prob.","cum.")
  useNA=ifelse(useNA,"always","no")
  rownames(tab)=names(c(table(x,useNA=useNA),""))

  tab[-nrow(tab),1]=table(x,useNA=useNA)
  tab[-nrow(tab),2]=prop.table(table(x,useNA=useNA))
  tab[,3] = cumsum(tab[,2])
  if(k>2)  tab[nrow(tab),-3]=colSums(tab[-nrow(tab),-3])
  if(k==2) tab[nrow(tab),-3]=tab[-nrow(tab),-3]

  tab
}
Run Code Online (Sandbox Code Playgroud)

和新的基于 dplyr

tab2 = function(x, useNA =FALSE) {
    if(!useNA) if(any(is.na(x))) x = na.omit(x)
    n = length(x)
    out = data.frame(x,1) %.%
        group_by(x) %.%
        dplyr::summarise(
            Freq    = length(X1),
            Percent = Freq/n
        ) %.%
        dplyr::arrange(x)
    ids = as.character(out$x)
    ids[is.na(ids)] …
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table

4
推荐指数
1
解决办法
4869
查看次数

用d3.js(纽约市自治市和人口普查区)绘制topojson文件

这是第一个topojson问题.我在渲染地图(纽约市区)时遇到问题,无法弄清楚原因.下面的代码只是这个示例的副本,带有不同的topojson文件.我在这里上传了这个文件.以下是有关我如何创建文件的详细信息.现在,我只是变得混乱.可能原因是topojson文件,但我不知道什么是错的.

ps:我无法将其标记为topojson因为之前未使用过该标记

TopoJSON文件

1)从这里下载shapefile

(在"自治市镇和社区区"下的文件"自治市镇"(左),ArcView Shapefile)

2)使用QGis简化shapefile

3)转换为TopoJSON

ogr2ogr -f geoJSON nybb-geo.json nybb.shp
topojson -o nybb.json nybb-geo.json
Run Code Online (Sandbox Code Playgroud)

HTML/JS代码

<!DOCTYPE html>
<meta charset="utf-8">
<style>

.boundary {
  fill: none;
  stroke: #000;
  stroke-width: .5px;
}

</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://d3js.org/topojson.v0.min.js"></script>
<script>

var width = 960,
    height = 500;

var path = d3.geo.path();

var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height);

d3.json("/geo/nybb.json", function(error, topology) {
  svg.append("path")
      .datum(topojson.object(topology, topology.objects['nybb-geo'].geometries[0]))
      .attr("d", path)
      .attr("class", "boundary");
}); …
Run Code Online (Sandbox Code Playgroud)

shapefile map-projections d3.js

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