std::atomic<size_t> freshDataEnd;
size_t dataWorkStart = 0;
size_t dataWorkEnd;
#pragma omp parallel
{
#pragma omp task
{
//increment freshDataEnd atomically upon reading every P objects
//return when end of file is reached
readData(vecObj, freshDataEnd);
}
#pragma omp task
{
omp_set_num_threads(N-1);
while(freshDataEnd <= MAX_VEC_LEN) {
if (dataWorkStart < freshDataEnd) {
dataWorkEnd = freshDataEnd;
#pragma omp parallel for schedule(dynamic, per_thread)
for(size_t i = dataWorkStart; i < dataWorkEnd; ++i) {
threadWorkOnElement(vecObj, i);
}
dataWorkStart = dataWorkEnd;
}
}
}
}
这给了我答案&#34;因子w / 8级&#34;地球&#34;,&#34; Jupiter&#34;,..:4 8 1 3 2 6 7 5&#34;
我不明白结肠后数字的含义。是否意味着地球处于因子4的位置?在阅读了几个网站之后,它说它是因素的内部水平表示,但内部水平表征的因素是什么?这让我很困惑。我是R编程的初学者。
答案 0 :(得分:2)
该因子将标称值存储为
[ 1... k ]
范围内的整数向量(其中k
是标称变量中唯一值的数量),以及字符串的内部向量(原始值)映射到这些整数。
如果您没有指定因子的级别,R将按字母顺序排序,并使用升序的整数列表识别每个级别。
在您的示例中,整数列表显示每个条目在原始向量中的位置;你的向量是Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
。但有序向量为Earth Jupiter Mars Mercury Neptune Saturn Uranus Venus
,因此Mercury
位于第4位,Venus
位于第8位,Earth
位于第1位,依此类推。
如果您希望在输入因子时对其进行排序,则应执行以下操作:
factor(planets, levels=planets)
str(factor(planets, levels=planets))
的输出是:
Factor w/ 8 levels "Mercury","Venus",..: 1 2 3 4 5 6 7 8