我有两个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方法来做到这一点?
我的程序是编写一个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) 我想检查 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) 有没有之间的差异a^2,并a^2L在[R ?
速差?
精确?
到目前为止,我没有看到,只是想知道^ 2是作为log/exp对实现的,而是^ 2L作为乘法.如果a不仅仅是一个向量呢?
UPDATE
不,这不是重复,我知道2和之间的区别2L.问题是,这种差异是否对电力运营商起作用?
所有
用迭代器写了一些花哨的容器.所以我有
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参考?有些丑陋的演员?
假设我有一个排序的值数组:
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],以便:
v[i[0]] ... v[i[n-1]]指向一个唯一的数字(即不得指向5两次)到目前为止我尝试过的:
我可以使用元组和领带交换两个变量吗?
int x, y;
....
std::tie(y, x) = std::make_tuple(x, y);
Run Code Online (Sandbox Code Playgroud) 所有
传统上,在有关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)
更笼统的问题-《核心指南》和其他地方应该走这条路吗?
有什么想法吗?评论?