我在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)
知道如何有效地一次更新整行吗?
我致力于转换现有程序以利用STL的一些并行功能.
具体来说,我重新编写了一个大循环来处理std :: accumulate.它很好地运行.
现在,我希望并行运行累积操作.
我在GCC上看到的文档概述了两个具体步骤.
-D_GLIBCXX_PARALLEL<parallel/algorithm>添加编译器标志似乎没有任何改变.执行时间是相同的,在监视系统时,我没有看到任何多个核心使用的迹象.
添加并行/算法标头时出错.我认为它将包含在最新版本的gcc(4.7)中.
那么,有几个问题:
欢迎任何和所有建议.
谢谢!
我的任务是开发一个回归模型,查看不同项目中的学生注册情况.这是一个非常好的,干净的数据集,其中注册计数遵循泊松分布.我在R中拟合模型(使用GLM和零膨胀泊松.)得到的残差似乎是合理的.
然而,当时我被要求将学生的数量改为"费率",这个数字计算为学生/学校人口(每个学校都有自己的人口.))现在这不再是计数变量,而是0到1之间的比例这被认为是一项计划中的"入学比例".
这个"比率"(学生/人口)不再是泊松,但肯定也不正常.所以,我对适当的分布有点迷失,后续的模型代表它.
对数正态分布似乎很适合这个速率参数,但是我有很多0值,所以它实际上不适合.
关于这个新参数的最佳分布形式的任何建议,以及如何在R中建模?
谢谢!
我试图在我的代码中转换一些循环来使用STL的for_each功能.目前,我在同一组数据上计算和累加两个单独的值,要求我循环数据两次.为了速度,我想循环一次并积累两个值.建议使用for_each,因为它显然可以很容易地用于多线程或多处理器实现(我还没有学会如何做到这一点.)
创建一个只循环数据并计算两个值的函数很容易,但我需要返回两者.要与for_each一起使用,我需要在每次迭代时返回两个计算值,以便STL可以对它们求和.根据我的理解,这是不可能的,因为for_each期望返回一个值.
除了更清晰的代码(可以说是?)之外,使用for_each的目标是最终转移到多线程或多处理器实现,以便可以并行完成数据循环,从而使事情运行得更快.
有人建议我使用仿函数而不是函数.但是,这引发了两个问题.
谢谢!
简要概述:我有一个构建一些数据对象的基类.然后我有一个子类,它继承了基类中所有公共方法和指向对象的指针.
在那个子类中,我想构造一个在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.
想法?
理解类结构中的变量范围有些困难.
我想在类构造函数中创建一些变量,然后让它们可用于该类中的函数.我认为只在构造函数中定义它们会起作用,但是我的编译器(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)