我有一个名为的头文件coolStuff.h
包含一个awesomeSauce(arg1)
我想在我的cpp源文件中使用的函数.
目录结构:
代码:
#include <Rcpp.h>
#include <cppHeaders/coolStuff.h>
using namespace Rcpp;
// [[Rcpp::export]]
double someFunctionCpp(double someInput){
double someOutput = awesomeSauce(someInput);
return someOutput;
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
theCppFile.cpp:2:31: error: cppHeaders/coolStuff.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我已经移动了整个地方的文件和目录,似乎无法让它工作.我看到使用第三方标题的示例,只是说这样做:
#include <boost/array.hpp>
Run Code Online (Sandbox Code Playgroud)
(来自Hadley/devtools)
https://github.com/hadley/devtools/wiki/Rcpp
什么给出了什么?我整个上午一直在寻找,但找不到像我这样简单事情的答案.
好了,我已经想出如何在Rstudio中构建使用Rcpp的软件包,让我重新解释一下这个问题.我有一个独立的头文件coolStuff.h,它包含我想在我的cpp代码中使用的函数.
1)我应该在包目录结构中放置coolStuff.h,以便它包含的函数可以被CppFile.cpp使用?
2)如何在cpp文件中调用coolStuff.h?再次感谢你的帮助.我从上次谈话中学到了很多东西.
注意:我阅读了小插图"编写使用Rcpp的软件包",但没有解释如何执行此操作.
好吧,让我总结一下我的问题的答案,因为它分散在这个页面上.如果我得到一个错误的细节,请随时编辑或让我知道,我将编辑它:
因此,您找到了一个.h
或多个.cpp
文件,其中包含您要在.cpp
要编写的文件中使用的函数或其他一些代码Rcpp
.
让我们继续调用这个找到的代码coolStuff.h
并调用你想要使用的函数awesomeSauce()
.让我们调用您正在编写的文件theCppFile.cpp
.
(我应该注意这里.h文件和.cpp文件中的代码都是C++代码,它们之间的区别在于C++程序员以正确的方式保持组织.我将在这里讨论差异,但在SO上进行简单的搜索会引导你讨论差异.对于你需要使用你发现的代码的R程序员,没有真正的区别.)
简而言之:您可以使用一个文件,coolStuff.h
如果它不调用其他库,通过剪切和粘贴theCppFile.cpp
,或者如果您创建一个包,您可以将文件放在\src
包含该theCppFile.cpp
文件的目录中并在文件 …
我正在使用Spark 1.3.1.
我试图在Python中查看Spark数据帧列的值.使用Spark数据帧,我可以df.collect()
查看数据帧的内容,但是我没有看到Spark数据帧列的最佳方法.
例如,数据框df
包含一个名为的列'zip_code'
.所以我可以做df['zip_code']
,它变成了一个pyspark.sql.dataframe.Column
类型,但我找不到一种方法来查看值df['zip_code']
.
一切都在问题中!我只是试着做一些优化,并且为了好奇而把钉子钉在脖子上,我试过了:
t1 <- rnorm(10)
microbenchmark(
mean(t1),
sum(t1)/length(t1),
times = 10000)
Run Code Online (Sandbox Code Playgroud)
结果是mean()比"手动"计算慢6倍!
它是否源于在调用Internal(mean)之前mean()代码的开销,还是C代码本身更慢?为什么?有充分的理由,因此是一个很好的用例吗?
这是我刚刚在其他人的问题中找到的初始化.
my_data data[]={
{ .name = "Peter" },
{ .name = "James" },
{ .name = "John" },
{ .name = "Mike" }
};
Run Code Online (Sandbox Code Playgroud)
我之前从未见过这样的东西,也找不到解释.name可能是正确的.
我正在寻找的是这个过程如何逐步进行.
它看起来像是:
1) data;
2) *data;
3) (*data).name;
4) (*data).name="Peter";
Run Code Online (Sandbox Code Playgroud)
或者我完全错了?
虽然我标记了这个作业,但它实际上是我自己做的一个免费课程.无论如何,该课程被称为"从Nand到俄罗斯方块",我希望有人在这里看过或参加过课程,这样我就可以得到一些帮助.我正处于使用提供的hdl语言构建ALU的阶段.我的问题是我无法正确编译芯片.当我尝试为ALU设置输出标志时,我收到错误.我认为问题是我不能下标任何中间变量,因为当我只是尝试根据一些随机变量(比如一个输入标志)将标志设置为true或false时,我没有得到错误.我知道问题不在于我尝试使用的芯片,因为我使用的是所有内置芯片.
到目前为止,这是我的ALU芯片:
/**
* The ALU. Computes a pre-defined set of functions out = f(x,y)
* where x and y are two 16-bit inputs. The function f is selected
* by a set of 6 control bits denoted zx, nx, zy, ny, f, no.
* The ALU operation can be described using the following pseudocode:
* if zx=1 set x = 0 // 16-bit zero constant
* if nx=1 set x = !x // Bit-wise negation
* if zy=1 set …
Run Code Online (Sandbox Code Playgroud) 我正在尝试一些尴尬的预处理,并得出类似这样的东西:
#include <stdio.h>
#define SIX =6
int main(void)
{
int x=6;
int y=2;
if(x=SIX)
printf("X == 6\n");
if(y=SIX)
printf("Y==6\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
gcc给了我错误:
test.c:在函数'main'中:
test.c:10:8:错误:'='之前的预期表达式
test test.c:12:8:错误:'='之前的预期表达式令牌
这是为什么?
我很难以我能够轻易理解的方式找到关于这个主题的信息,所以我要求对我发现的内容进行审查.这只是关于转换和转换的.
在示例中,我将指的是:
(signed/unsigned) int bigger;
(signed/unsigned) char smaller;
Run Code Online (Sandbox Code Playgroud)
截断整数.(超大化>小)
bigger
smaller
如果较大的值太大而不适合较小的类型,则会导致未定义的行为(纠正我).但是我的规则应该是在所有机器上工作(对此也是正确的),结果应该是可预测的.
加宽整数(小 - >更大)
a)signed char
- >signed int
b)signed char
- >unsigned int
c)unsigned char
- >signed int
d)unsigned char
- >unsigned int
哪些未定义/未指定的行为,我没有提到可以弹出?
这是我的代码:
CHIP PC {
IN in[16],load,inc,reset;
OUT out[16];
PARTS:
Inc16(in = regout, out = incout);
Mux16(a = regout, b = incout, sel = inc, out = incdecision);
Mux16(a = incdecision, b = false, sel = reset, out = resetdecision);
Mux16(a = regout, b = resetdecision, sel = load, out = loaddecision);
Register(in = loaddecision, load = true, out = regout, out = out);
}
Run Code Online (Sandbox Code Playgroud)
基本上,从寄存器中出来的值是递增的,只有当 inc 为 1(通过 Mux 检查)时才被接受,然后通过另一个可能重置它的多路复用器,然后另一个多路复用器可能会或可能不会写入它,具体取决于载荷值。然后,任何从中产生的值(无论是更改的值还是来自旧寄存器的值)都被放入寄存器中。
我究竟做错了什么?
所以这是代码:
int create_mask(unsigned b, unsigned e)
{
unsigned int mask=1;
if(b<e || b<0 || e<0)
{
printf("Wrong values, starting bit can't be smaller than ending.\n");
printf("Both got to be >= 0.\n");
exit(EXIT_FAILURE);
}
while(b>0)
{
printf("%u\n", b);
mask<<=1;
if(b>e)
mask|=1;
b--;
}
return ~mask; /* negates mask for later purpose that is clearing corresponding bits */
}
Run Code Online (Sandbox Code Playgroud)
函数为某些位操作创建掩码,但应该采用两个无符号整数b和e,两者都是非负数.问题是如何防止用户输入负数?当用(-1,0)调用函数时,它启动循环,并且错误地退出.
我想点一个HashMap
:
Map<Integer, Set<Integer>> unsorted
Run Code Online (Sandbox Code Playgroud)
按值集的大小.我尝试按如下方式进行:
Map<Integer, Set<Integer>> sorted = unsorted.entrySet().stream()
.sorted(comparingInt(e->e.getValue().size()))
.collect(toMap(
Map.Entry::getKey,
Map.Entry::getValue,
LinkedHashMap::new
));
Run Code Online (Sandbox Code Playgroud)
但是得到了一个错误
"无法从静态上下文引用非静态方法"
.我是Java 8 Streams的新手,显然缺少一些微不足道的东西 - 它是什么?
c ×4
hdl ×2
nand2tetris ×2
r ×2
alu ×1
apache-spark ×1
arrays ×1
assembly ×1
c++ ×1
dataframe ×1
hashmap ×1
integer ×1
java ×1
java-stream ×1
optimization ×1
performance ×1
pyspark ×1
python ×1
rcpp ×1
struct ×1