小编Sev*_*eux的帖子

如何从另一个data.table重命名R data.table中的级别?

我有两个data.tables,dt是一个长整数列levels,其整数列的范围为1 ... 5,另一个是data.table“ labels”,其中包含简单形式的标签,例如:

labels <- data.table(V1=1:5, V2=c("Very Low", "Low", "Median", "High", "Very High"))
#    V1       V2
# 1:  1       Very Low
# 2:  2       Low
# 3:  3       Median
# 4:  4       High
# 5:  5       Very High
Run Code Online (Sandbox Code Playgroud)

实际dt值相当大,但是对于可重现性而言,一个简单的方法就可以做到(尽管在实际DT级别中不是那么规则):

dt <- data.table(levels=rep(1:5, times=10))
Run Code Online (Sandbox Code Playgroud)

如何一次性dt用字符标签替换级别列labels

我可以在手动循环中执行此操作(丑陋!),也可以通过添加另一列来执行此操作,如下所示:

dt[, tmp := labels$V2[dt$level] ]
Run Code Online (Sandbox Code Playgroud)

然后删除列level并重命名tmp

有没有一种好的data.table方法来做到这一点?

r data.table

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

具有随机数的唯一向量

我的程序是编写一个c ++程序,初始化一个大小为SIZE的整数向量v,每个向量均具有[0,2 * SIZE]范围内的不同随机整数,如何确保向量中的所有数字都是唯一的,如何编辑我的数字初始化向量,使其正常工作,在我的逻辑中有缺陷。无法使用随机播放。

#include <iostream>
#include <ctime>
#include <vector>
#include <iomanip>
#include<algorithm>

const int SIZE =10;
unsigned int seed = (unsigned)time(0);
using namespace std;

double random (unsigned int &seed);
void print_vector (vector<int> :: iterator b,
                   vector<int> :: iterator e );
void initialize_vector(vector<int> &v);
vector<int>v;

int main()
{
    cout << endl;
    initialize_vector(v);
    cout << "Vector : " << endl;
    print_vector(v.begin(), v.end());
    return 0;
}

double random(unsigned int &seed)
{
    const int MODULUS = 15749;
    const int MULTIPLIER = 69069;
    const …
Run Code Online (Sandbox Code Playgroud)

c++ random

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

glm::vec3 和 epsilon 比较

我想检查 aglm::vec3是否等于零向量glm::vec3(0,0,0)

直到现在我在写

if(v == glm::vec3(0,0,0))
    ...
Run Code Online (Sandbox Code Playgroud)

但后来我了解了 epsilon,所以我的问题是,是否有一种更快(更具可读性)的方法来进行此检查,而不是像这样进行显式比较:

if(abs(v.x) < EPSILON && abs(v.y) < EPSILON && abs(v.z) < EPSILON)
    ...
Run Code Online (Sandbox Code Playgroud)

opengl glm-math

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

a ^ 2和^ 2L之间有区别吗?

有没有之间的差异a^2,并a^2L[R

速差?

精确?

到目前为止,我没有看到,只是想知道^ 2是作为log/exp对实现的,而是^ 2L作为乘法.如果a不仅仅是一个向量呢?

UPDATE

不,这不是重复,我知道2和之间的区别2L.问题是,这种差异是否对电力运营商起作用?

r

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

在C++ TDD中调用重载const与非const方法的好方法?

所有

用迭代器写了一些花哨的容器.所以我有

iterator begin() {
}

iterator end() {
}

const_iterator begin() const {
}

const_iterator end() const {
}
Run Code Online (Sandbox Code Playgroud)

在测试中,我实例化容器,填充并测试它.调用const和非const版本的接受/好方法是什么?说,简单的测试就好

TEST( c.end() - c.begin() == c.size() );
Run Code Online (Sandbox Code Playgroud)

应该运行迭代器和const迭代器.Const参考?有些丑陋的演员?

c++ tdd unit-testing catch-unit-test

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

将随机索引挑选到已排序的数组中

假设我有一个排序的值数组:

int n=4; // always lower or equal than number of unique values in array
int i[256] = {};
int v = {1 1 2 4 5 5 5 5 5 7 7 9 9 11 11 13}
// EX 1        ^         ^       ^       ^
// EX 2    ^                 ^         ^ ^
// EX 3    ^ ^           ^               ^
Run Code Online (Sandbox Code Playgroud)

我想生成n个随机索引值i[0] ... i[n-1],以便:

  1. v[i[0]] ... v[i[n-1]]指向一个唯一的数字(即不得指向5两次)
  2. 每个数字必须是同类中最右边的(即必须指向最后 5个)
  3. 应始终包括最终数字的索引(在这种情况下为13).

到目前为止我尝试过的:

  1. 获取索引到最后一个唯一值 …

c arrays random

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

这是一个未定义的行为吗?我能不用温度交换价值吗?

我可以使用元组和领带交换两个变量吗?

int x, y;
....
std::tie(y, x) = std::make_tuple(x, y);
Run Code Online (Sandbox Code Playgroud)

c++ c++11 c++14

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

我们应该采用新的自我分配保护方式吗?

所有

传统上,在有关C ++的书籍中,甚至在核心准则中,自我分配保护都写为

A& A::operator=(const A& a) {
    if (&a != this) {
       ...
    }
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

但是在现代C ++中(自C ++-11起),我们有了std :: addressof魔术。

如果我要教给学生现代C ++的所有好处,我是否应该提倡将自赋值检查写成:

A& A::operator=(const A& a) {
    if (std::addressof(a) != this) {
       ...
    }
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

更笼统的问题-《核心指南》和其他地方应该走这条路吗?

有什么想法吗?评论?

c++ standards c++11 c++17

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

标签 统计

c++ ×4

c++11 ×2

r ×2

random ×2

arrays ×1

c ×1

c++14 ×1

c++17 ×1

catch-unit-test ×1

data.table ×1

glm-math ×1

opengl ×1

standards ×1

tdd ×1

unit-testing ×1