小编ilp*_*ipe的帖子

将代码从vim发送到外部应用程序以执行

我经常在工作中使用stata.我选择的文本编辑器是(g)vim.我一直在使用这里这里提供的脚本将代码从vim发送到stata.这个功能是非常实用的,实际上是唯一阻止我完全切换到Linux的东西.脚本是用AutoIT编写的,所以我不能在linux中使用它们.它们也基本上独立于文本编辑器的选择,编写它们的人使用的是notepad ++.

基本上,这些脚本与我的vimrc中的几行一起允许我将选择或整个文件发送到正在运行的stata窗口(如果没有打开,则首先启动stata).

我正在寻找一个在linux中执行此操作的解决方案,但我不知道从哪里开始.在linux中有两个不同的stata版本,命令行的stata和xstata是gui版本.我需要使用gui版本,因为命令行版本的功能有限,所以屏幕/ tmux被排除在外.

如果这是微不足道的,我真的很抱歉错过了它,并非常感谢解决方案.我也无法找到我可以使用的vim的现有插件.如果没有,我愿意花一些时间来弄清楚如何实施解决方案.然而,正确方向的指针会非常有用.我对linux和编程一般比较陌生,但愿意学习.

关于工具:我不知道bash,但在某些时候我想要查看它.我已经在python中涉足了一点,所以这也没关系.如果此任务还有其他优势,请告诉我.

任何帮助是极大的赞赏.AutoIT脚本托管在网站上,但如果需要,我可以在此处发布我的Windows设置.

编辑

好的,经过评论中的一些争论,这里是我需要翻译的基本AutoIT脚本.(我更喜欢每次都不会覆盖系统剪贴板内容的解决方案.)

Edit2我想这就是脚本本质上的作用:它检查一个打开的stata窗口,选择它(或执行一个),将要执行的内容粘贴到一个临时文件中,切换到stata窗口,选择命令行使用ctrl-1(以及可能已经使用ctrl-a编写的任何内容),然后粘贴"tempfile"到命令行,然后命令行执行发送的代码.至少这是我理解它的方式.

最后评论

我不久前在bash中编写了一个解决方案,它在这里作为这个问题的先前版本的答案发布.

; Declare variables
Global $ini, $statapath, $statawin, $statacmd, $dofile, $clippause, $winpause, $keypause

; File locations
; Path to INI file
$ini = @ScriptDir & "\rundo.ini"
;; contents of ini file are the following
    ;[Stata]
    ;; Path to Stata executable
    ;statapath = "C:\Program Files\Stata11\StataSE.exe"
    ;; Title of Stata window
    ;statawin = "Stata/SE 11.2"
    ;; Keyboard shortcut for Stata command window
    ;statacmd = …
Run Code Online (Sandbox Code Playgroud)

python vim bash autoit stata

19
推荐指数
1
解决办法
1443
查看次数

在Vim中的缓冲区内运行R.

我已经在Windows上使用Stata和gVim一段时间了.最近我换了Linux,我打算也从Stata转到R.

我的一个朋友正在使用R和Emacs ESS,这似乎工作得很完美,但我宁愿继续使用vim.我已经安装了vim-r-plugin2,但是,我只能将代码发送到运行R的单独终端.我宁愿将我的屏幕拆分为运行R的缓冲区和一个带有.R文件的缓冲区,然后从中发送代码一个到另一个.使用Emacs中的ESS似乎可行,您可以在缓冲区中运行终端/ R而不会出现问题.我还没有办法让这项工作成功.vim的R插件使用screen,打开运行shell的缓冲区的唯一方法就是Conque Shell插件.

我知道,与Emacs不同,Vim被设计成一个简单的文本编辑器.然而,让R在缓冲区中运行似乎更加实用.

我希望我的问题是可以理解的,请耐心等待我最近才切换到Linux,除了统计数据之外几乎没有任何关于编程的知识.谢谢!

vim shell plugins r

11
推荐指数
1
解决办法
1482
查看次数

将代码从vim发送到stata

我一直在大学使用Vim在Windows中编写Stata脚本一段时间.我正在学习R,我想完全切换到Linux作为我的操作系统(我最近在笔记本电脑上切换到Ubuntu).R在Windows和Linux中都可以与Vim一起使用,但是我有时候还需要使用Stata.在Windows中,我一直使用Stata用户提供的简单AutoIt脚本将行/整个文件发送到stata进行评估.这个脚本在Linux中不起作用.

这就是脚本的样子

; AutoIt v3 script to run a Stata do-file from an external text editor
; Version 3.1, Friedrich Huebler, fhuebler@gmail.com, www.huebler.info, 30 March 2009

; Declare variables
Global $ini, $statapath, $statawin, $dofile, $winpause, $keypause, $clippause

; File locations
; Path to INI file
$ini = @ScriptDir & "\rundo.ini"
; Path to Stata executable
$statapath = IniRead($ini, "Stata", "statapath", "C:\Program Files\Stata10\wsestata.exe")
; Title of Stata window
$statawin = IniRead($ini, "Stata", "statawin", "Stata/SE 10.1")

; Path to do-file that is …
Run Code Online (Sandbox Code Playgroud)

python linux vim bash stata

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

机械化提交表格字符编码问题

我试图抓取http://www.nscb.gov.ph/ggi/database.asp,特别是从选择市/省获得的所有表格.我正在使用python与lxml.html和mechanize.到目前为止,我的刮刀工作正常,但是HTTP Error 500: Internal Server Error在提交市政[19]"Peñarrubia,Abra"时我得到了.我怀疑这是由于字符编码.我的猜测是,烯字符(上面带有波浪号的n)会导致这个问题.我怎样才能解决这个问题?

我脚本的这一部分的一个工作示例如下所示.因为我刚开始使用python(并且经常使用我在SO上找到的片段),所以进一步的评论非常感谢.

from BeautifulSoup import BeautifulSoup
import mechanize
import lxml.html
import csv



class PrettifyHandler(mechanize.BaseHandler):
    def http_response(self, request, response):
        if not hasattr(response, "seek"):
            response = mechanize.response_seek_wrapper(response)
        # only use BeautifulSoup if response is html
        if response.info().dict.has_key('content-type') and ('html' in response.info().dict['content-type']):
            soup = BeautifulSoup(response.get_data())
            response.set_data(soup.prettify())
        return response

site = "http://www.nscb.gov.ph/ggi/database.asp"

output_mun = csv.writer(open(r'output-municipalities.csv','wb'))
output_prov = csv.writer(open(r'output-provinces.csv','wb'))

br = mechanize.Browser()
br.add_handler(PrettifyHandler())


# gets municipality stats
response = br.open(site)
br.select_form(name="form2")
muns = br.find_control("strMunicipality2", type="select").items
# …
Run Code Online (Sandbox Code Playgroud)

python encoding mechanize scraper

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

更快的方法来创建通过id聚合列的变量

有更快的方法吗?我想这是不必要的慢,并且这样的任务可以通过基本功能完成.

df <- ddply(df, "id", function(x) cbind(x, perc.total = sum(x$cand.perc)))
Run Code Online (Sandbox Code Playgroud)

我是很新的R.我已经看过了by(),aggregate()tapply(),但并没有让他们在所有或我想要的方式工作.我希望将总和附加到原始数据帧,而不是返回较短的向量.做这个的最好方式是什么?

编辑:这是应用于我的数据的答案的速度比较.

> # My original solution
> system.time( ddply(df, "id", function(x) cbind(x, perc.total = sum(x$cand.perc))) )
   user  system elapsed 
 14.405   0.000  14.479 

> # Paul Hiemstra
> system.time( ddply(df, "id", transform, perc.total = sum(cand.perc)) )
   user  system elapsed 
 15.973   0.000  15.992 

> # Richie Cotton
> system.time( with(df, tapply(df$cand.perc, df$id, sum))[df$id] )
   user  system elapsed 
  0.048   0.000   0.048 

> # John
> system.time( …
Run Code Online (Sandbox Code Playgroud)

performance aggregate r plyr

6
推荐指数
2
解决办法
2945
查看次数

第一个python脚本,刮板,建议欢迎

我刚刚完成了我的第一个python脚本,一个来自philipines的选举数据的刮刀.我没有编程背景,我已经使用stata进行统计分析,最近在R中考虑了一点,因为我想在某些时候切换.但我想学习python从网站和其他来源提取数据.到目前为止,我只浏览了python教程,O'Reilly的"学习Python"正在等待我的架子.我从其他人的脚本中获取灵感并浏览包含的包文档,编写了以下脚本.

我基本上寻找的是一般建议.该脚本确实有效,但是有多余的部分吗?我应该采用不同的结构吗?是否有任何典型的(或简单的愚蠢)初学者错误?

我自己编写了一些问题,我在脚本之后列出了这些问题.

import mechanize
import lxml.html
import csv

site = "http://www.comelec.gov.ph/results/2004natl/2004electionresults_local.aspx"

br = mechanize.Browser()
response = br.open(site)

output = csv.writer(file(r'output.csv','wb'))


br.select_form(name="ctl00")
provinces = br.possible_items("provlist")

for prov in provinces:
    br.select_form(name="ctl00")
    br["provlist"] = [prov]
    response = br.submit()
    br.select_form(name="ctl00")
    pname = str(br.get_value_by_label("provlist")).strip("[]")
    municipalities = br.possible_items("munlist")
    for mun in municipalities:
        br.select_form(name="ctl00")
        br["munlist"] = [mun]
        response = br.submit(type="submit", name="ctl01")
        html = response.read()
        root = lxml.html.fromstring(html)
        try: 
            table = root.get_element_by_id(id="dlistCandidates")
            data = [
                       [td.text_content().strip() for td in row.findall("td")] 
                       for row in table.findall('tr')
                   ]
        except KeyError: …
Run Code Online (Sandbox Code Playgroud)

python lxml mechanize scraper

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

展开并展平一个参差不齐的嵌套列表

我知道之前已经详细介绍了扁平化嵌套列表的主题,但我认为我的任务有点不同,我找不到任何信息.

我正在写一个刮刀,作为输出我得到一个嵌套列表.顶级列表元素应该成为电子表格形式的数据行.但是,由于嵌套列表通常具有不同的长度,因此我需要在展平列表之前展开它们.

这是一个例子.我有

   [ [ "id1", [["x", "y", "z"], [1, 2]],    ["a", "b", "c"]],
     [ "id2", [["x", "y", "z"], [1, 2, 3]], ["a", "b"]],
     [ "id3", [["x", "y"],      [1, 2, 3]], ["a", "b", "c", ""]] ]
Run Code Online (Sandbox Code Playgroud)

我最终想要的输出是

   [[ "id1", "x", "y",  z, 1, 2, "", "a", "b", "c", ""],
    [ "id2", "x", "y",  z, 1, 2,  3, "a", "b",  "", ""],
    [ "id3", "x", "y", "", 1, 2,  3, "a", "b", "c", ""]]
Run Code Online (Sandbox Code Playgroud)

但是,像这样的中间列表

   [ [ "id1", [["x", "y", "z"], …
Run Code Online (Sandbox Code Playgroud)

python nested-lists

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

从XML文件创建电子表格

我正在尝试将120mb的恐怖事件XML数据库(这里可以下载的第一个文件http://wits.nctc.gov/Export.do)转换为电子表格,以便我可以将其与其他数据合并并进行统计分析.

到目前为止,我一直在使用Stata,现在它没用,因为它不会读取XML.该网站按月提供较小的文件,可以通过excel打开,但excel不会以我想要的形式显示它们,应该有更好的方法来转换整个文件,而不是打开超过一百个单个文件,手动保存它们选项卡分开然后合并它们.

我正在寻找一种方法将完整的WITS.xml文件转换为电子表格,其中一行代表一个恐怖事件,并且不会丢失来自xml的信息.即使是结构不同的XML也可能没问题.我已经尝试过转换器,但它们要么不是免费的,要么不按我想要的方式执行,要么文件大小太大,我不知道如何使用xslt.我正在学习经济学,我的编程知识几乎不存在,这越来越成为一个缺点.我已经看到有一个我可以使用的R包,也许现在是开始学习R或其他语言的合适时机.但是,如果有一种快速简便的方法,我肯定会喜欢它.

xml statistics r stata

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