小编Noa*_*oah的帖子

更新R中data.table中的整行

我在R中有一个包含9,000列的data.table对象.我的代码一次计算所有9,000列的新值,并返回值向量.我想一下子将data.table中的行替换为所有值.在dataFrame对象中,这很容易.但是,我无法弄清楚如何在data.table中使用它.

d <- data.table(q=c(1,2,3,4,5,6,7,8,9), x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
d[q==1, := c(5,5,5,5)] # FAILS
d[q==1, ] <- c(5,5,5,5) # FAILS
Run Code Online (Sandbox Code Playgroud)

知道如何有效地一次更新整行吗?

r data.table

13
推荐指数
2
解决办法
5216
查看次数

OS X中的并行STL算法

我致力于转换现有程序以利用STL的一些并行功能.

具体来说,我重新编写了一个大循环来处理std :: accumulate.它很好地运行.

现在,我希望并行运行累积操作.

我在GCC上看到的文档概述了两个具体步骤.

  1. 包括编译器标志 -D_GLIBCXX_PARALLEL
  2. 可能添加标题 <parallel/algorithm>

添加编译器标志似乎没有任何改变.执行时间是相同的,在监视系统时,我没有看到任何多个核心使用的迹象.

添加并行/算法标头时出错.我认为它将包含在最新版本的gcc(4.7)中.

那么,有几个问题:

  1. 有没有办法明确确定代码是否实际并行运行?
  2. OS X上是否有"最佳实践"方法?(理想的编译器标志,标题等?)

欢迎任何和所有建议.

谢谢!

algorithm parallel-processing macos stl

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

R中的Rate变量的回归

我的任务是开发一个回归模型,查看不同项目中的学生注册情况.这是一个非常好的,干净的数据集,其中注册计数遵循泊松分布.我在R中拟合模型(使用GLM和零膨胀泊松.)得到的残差似乎是合理的.

然而,当时我被要求将学生的数量改为"费率",这个数字计算为学生/学校人口(每个学校都有自己的人口.))现在这不再是计数变量,而是0到1之间的比例这被认为是一项计划中的"入学比例".

这个"比率"(学生/人口)不再是泊松,但肯定也不正常.所以,我对适当的分布有点迷失,后续的模型代表它.

对数正态分布似乎很适合这个速率参数,但是我有很多0值,所以它实际上不适合.

关于这个新参数的最佳分布形式的任何建议,以及如何在R中建模?

谢谢!

regression r poisson glm

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

STL for_each具有多个返回值和/或虚拟基类仿函数

我试图在我的代码中转换一些循环来使用STL的for_each功能.目前,我在同一组数据上计算和累加两个单独的值,要求我循环数据两次.为了速度,我想循环一次并积累两个值.建议使用for_each,因为它显然可以很容易地用于多线程或多处理器实现(我还没有学会如何做到这一点.)

创建一个只循环数据并计算两个值的函数很容易,但我需要返回两者.要与for_each一起使用,我需要在每次迭代时返回两个计算值,以便STL可以对它们求和.根据我的理解,这是不可能的,因为for_each期望返回一个值.

除了更清晰的代码(可以说是?)之外,使用for_each的目标是最终转移到多线程或多处理器实现,以便可以并行完成数据循环,从而使事情运行得更快.

有人建议我使用仿函数而不是函数.但是,这引发了两个问题.

  1. 如何使用仿函数代替两个值的返回累积?
  2. 我有两种应用此算法的方法.当前代码有一个虚拟基类,然后是两个继承和实现实际工作代码的类.我无法弄清楚如何使用"虚拟函子",以便每个方法类都可以实现自己的版本.

谢谢!

c++ virtual stl functor

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

仿函数和对象继承

简要概述:我有一个构建一些数据对象的基类.然后我有一个子类,它继承了基类中所有公共方法和指向对象的指针.

在那个子类中,我想构造一个在for_each循环中使用的仿函数(作为结构).我的问题是在仿函数运算符中,我在尝试访问对象时遇到错误.

缩写示例:

class Child  : public BaseClass {
  Child(DataSource& in_data): Base(in_data){};

  struct foo {
    double operator() (int x){  
        double y = in_data.some_function(x);
        // do stuff
    }            
  };
}
Run Code Online (Sandbox Code Playgroud)

错误:无法访问in_data.some_function.

想法?

c++ stl compiler-errors functor

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

在构造函数中创建变量

理解类结构中的变量范围有些困难.

我想在类构造函数中创建一些变量,然后让它们可用于该类中的函数.我认为只在构造函数中定义它们会起作用,但是我的编译器(g ++)给了我一个错误:'foo'没有在这个范围内声明.

有人可以解释这个微不足道的问题吗?

这里有一些虚拟代码来说明我正在尝试做什么.

myClass.h
using namespace std;
class myClass{

public:
    myClass(){
        std::vector<int> foo;
        foo.resize(10,0);
    };

    void myFunc();
}

myClass.cpp
void myClass::myFunc(){
    std::cout << foo[1] << end;
    // etc...
}
Run Code Online (Sandbox Code Playgroud)

c++ scope class

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