小编Dav*_*son的帖子

Valgrind用getline()给出错误

我有一个调用函数getline(),它从标准文本文件中读取行.这些行结束\r\n,因为这是规范所要求的,因为它是VCARD文件的"互联网标准".

无论如何,我通过最新的GCC和Valgrind版本在OpenSUSE 11.3上通过Valgrind运行这个宝贝; 没有错误.但是,由于与此问题无关的原因,我将发行版转换为Back Track 4(基于Ubuntu),现在我得到了一公吨的Valgrind错误:

    ==21536== Conditional jump or move depends on uninitialised value(s)
==21536==    at 0x40164A1: (within /lib/ld-2.11.1.so)
==21536==    by 0x4007C04: (within /lib/ld-2.11.1.so)
==21536==    by 0x4002A2C: (within /lib/ld-2.11.1.so)
==21536==    by 0x4014206: (within /lib/ld-2.11.1.so)
==21536==    by 0x4000C6C: (within /lib/ld-2.11.1.so)
==21536==    by 0x4000856: (within /lib/ld-2.11.1.so)
==21536==
==21536== Conditional jump or move depends on uninitialised value(s)
==21536==    at 0x40164AC: (within /lib/ld-2.11.1.so)
==21536==    by 0x4007C04: (within /lib/ld-2.11.1.so)
==21536==    by 0x4002A2C: (within /lib/ld-2.11.1.so)
==21536==    by 0x4014206: (within /lib/ld-2.11.1.so)
==21536== …
Run Code Online (Sandbox Code Playgroud)

c linux valgrind

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

数字金字塔在Java的

我试图在java中打印金字塔看起来像这样: -

                    9
                  8 9 8
                7 8 9 8 7
              6 7 8 9 8 7 6
            5 6 7 8 9 8 7 6 5
          4 5 6 7 8 9 8 7 6 5 4 
        3 4 5 6 7 8 9 8 7 6 5 4 3 
      2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 
    1 2 3 4 5 6 7 8 9 8 7 6 5 4 …
Run Code Online (Sandbox Code Playgroud)

java

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

递归以找到表达的深度

我试图使用递归来找到"表达式"的深度,即有多少层嵌套元组:例如,

depth(('+', ('expt', 'x', 2), ('expt', 'y', 2))) => 2

depth(('/', ('expt', 'x', 5), ('expt', ('-', ('expt', 'x', 2), 1), ('/', 5, 2)))) => 4
Run Code Online (Sandbox Code Playgroud)

基本上,我认为我需要检查(从out到in)为每个元素作为元组的实例,然后如果是,则递归调用depth函数.但我需要找到一种方法来确定哪一组递归调用具有最大的深度,这就是我被卡住的地方.这是我到目前为止所拥有的:

def depth3(expr):
    if not isinstance(expr, tuple):
        return 0
    else:
        for x in range(0, len(expr)):
            # But this doesn't take into account a search for max depth
            count += 1 + depth(expr[x])
    return count
Run Code Online (Sandbox Code Playgroud)

想一个好方法来解决这个问题?

python recursion tracking depth

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

R填充矢量

我有一个零向量,比如长度为10.所以

v = rep(0,10)
Run Code Online (Sandbox Code Playgroud)

我想根据v1中的一组索引和另一个实际上具有序列值的向量v2来填充向量的某些值.所以另一个向量v1有索引说

v1 = c(1,2,3,7,8,9)
Run Code Online (Sandbox Code Playgroud)

v2 = c(0.1,0.3,0.4,0.5,0.1,0.9)
Run Code Online (Sandbox Code Playgroud)

最后我想要

v = c(0.1,0.3,0.4,0,0,0,0.5,0.1,0.9,0)
Run Code Online (Sandbox Code Playgroud)

所以v1中的索引是从v2映射的,其余的都是0.我显然可以编写一个for循环,但由于实际矩阵的长度,这在R中占用太长时间.有什么简单的方法吗?

operations r vector

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

从RStudio调用的knitr不保留加载包的顺序

当我使用Knit HTML按钮渲染在RStudio中使用缓存块的Rmd markdown文件时,我发现加载包的顺序不会从块到块记住.当我需要以特定顺序加载包以避免命名空间冲突时,这会导致问题.

对于可重现的示例(需要安装plyr,dplyr和pryr软件包,请参见下文),我首先创建一个knitr Rmd文档,加载plyr然后加载dplyr(它们都导出一个summarise函数),然后使用pryr来确定总结了功能.我用RStudio的"Knit HTML"按钮编织了这个:

```{r}
library(knitr)
opts_chunk$set(cache = TRUE, message = FALSE)
```

```{r test1}
library(plyr)
library(dplyr)
```

```{r test2, dependson = "test1"}
attr(pryr::where("summarise"), "name")
```
Run Code Online (Sandbox Code Playgroud)

按照这里的建议,我在dplyr之前加载plyr,这样dplyr的函数应该首先出现在搜索路径中.正如所料,输出md文件显示该summarise函数来自dplyr:

attr(pryr::where("summarise"), "name")
## [1] "package:dplyr"
Run Code Online (Sandbox Code Playgroud)

但是,如果我在test2块中做了一些小改动:

```{r test2, dependson = "test1"}
attr(pryr::where("summarise"), "name")  # this is a change
```
Run Code Online (Sandbox Code Playgroud)

导致它被重新编译,它现在以错误的顺序加载包,并summarise在plyr中找到:

attr(pryr::where("summarise"), "name")  # this is a change
## [1] "package:plyr"
Run Code Online (Sandbox Code Playgroud)

请注意,如果knit从R命令行运行,则不会发生此问题,但这只是因为它保持环境中的plyrdplyr软件包加载(如果我重新启动R,则会出现同样的问题).

我知道我可以参考函数 …

r rstudio knitr dplyr

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

IPython加载R - ImportError:无法导入名称转换

我正在尝试从Ipython中使用R,但是在加载rmagic >> rpy2.ipython(now)库时我得到了这个错误:(我只复制了最终版,而不是所有代码)

/usr/lib/python2.7/dist-packages/rpy2/robjects/robject.py in <module>()
      5 rpy2.rinterface.initr()
      6 
----> 7 from . import conversion
      8 
      9 class RObjectMixin(object):

ImportError: cannot import name conversion
Run Code Online (Sandbox Code Playgroud)

一个月前,这个工作正常,从那时起我就不会改变任何东西了.

我在网上研究了这个但是所有的答案都说要升级所有的程序版本而没有解决我的问题.可能,我做错了什么.

我安装了R版本3.1.1,Python版本2.7.9和Ipython 4.0.0.powerpc64处理器的最新版本.

python import r ipython

6
推荐指数
0
解决办法
836
查看次数

机械化"内存不足"错误

我试图从网页上逐页获取一些信息,基本上就是我所做的:

import mechanize
MechBrowser = mechanize.Browser()

Counter = 0

while Counter < 5000:
    Response = MechBrowser.open("http://example.com/page" + str(Counter))
    Html = Response.read()
    Response.close()

    OutputFile = open("Output.txt", "a")
    OutputFile.write(Html)
    OutputFile.close()

    Counter = Counter + 1
Run Code Online (Sandbox Code Playgroud)

好吧,上面的代码最终抛出了"Out of Memory"错误,在任务管理器中它显示该脚本在运行几个小时后耗尽了近1GB的内存......怎么回事?!

有人会告诉我出了什么问题吗?

python memory mechanize urllib2

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

将默认参数设置为Sweave代码块

我正在使用带有大型LaTeX Sweave文档的cacheSweave.而不是放

<<cache=true>>=
...snip...
@
Run Code Online (Sandbox Code Playgroud)

在我几乎所有的代码块中,我宁愿cache=true成为默认代码,也可以使用

<<cache=false>>=
...snip...
@
Run Code Online (Sandbox Code Playgroud)

当我不想要缓存代码块时.如何为代码块设置此默认参数?

我目前正在使用以下代码来编译Sweave文档:

library(cacheSweave)
Sweave(infile, driver = cacheSweaveDriver)
Run Code Online (Sandbox Code Playgroud)

latex r noweb sweave

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

传递矩阵作为参数

我想传递两个矩阵作为参数.这些矩阵有不同的大小,我不明白我是如何做这项工作的:

#include <stdio.h>
#include <stdlib.h>


void f(int m[3][], int n);

int main()
{
  int A[3][3]={{1,2,3},{4,5, 6},{7,8,9}};
  int B[3][2]={{1,2},{3, 4}, {5, 6}};

  f(A, 3);
  f(B, 2);

  return 0;
}

 void f(int m[3][], int n)
 {
    int i,j;
    for(i=0;i<3;i++)
    {
      for(j=0;j<n;j++)
       printf("%5d", m[i][j]);
    }
    return;
 }
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

c matrix c89

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

Java中的维特比算法

我正在学习 coursera NLP 课程,第一个编程任务是构建 Viterbi 解码器。我想我真的快要完成它了,但是有一些我似乎无法追踪的难以捉摸的错误。这是我的代码:

http://pastie.org/private/ksmbns3gjctedu1zxrehw

http://pastie.org/private/ssv6tc8dwnamn2qegdvww

到目前为止,我已经调试了与“教学”相关的函数,所以我可以说算法的参数正在被正确估计。特别感兴趣的是 viterbi() 和 findW() 方法。我正在使用的算法的定义可以在这里找到:http : //www.cs.columbia.edu/~mcollins/hmms-spring2013.pdf第 18 页。

我很难理解的一件事是,当 K = {1, 2} 时,我应该如何更新特殊情况的反向指针(在我的情况下,这是 0 和 1,因为我是零-索引我的数组)分别在这些情况下我使用的参数是 q({TAGSET} | *, *) 和 q ({TAGSET} | *, {TAGSET})。

提示而不是勺子喂的答案也将受到高度赞赏!

java nlp viterbi hidden-markov-models

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