小编use*_*356的帖子

找到包含R函数定义的源文件

我来自蟒蛇背景,我正试图赶上R,所以请耐心等待

我有一个R文件 - util.R包含以下行:

util.add <- function(a,b) a + b
util.sub <- function(a,b) { a - b }
Run Code Online (Sandbox Code Playgroud)

我的来源如下:

source('path/util.R')

我现在有两个函数对象,想要编写一个函数,如下所示:

getFilePath(util.add)

这会给我这个结果

[1] "path/util.R"

r metaprogramming

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

Pandas read_csv在具有空字符的列上失败

下面的列y应该是['Reg','Reg','Swp','Swp']

In [1]: pd.read_csv('/tmp/test3.csv')  
Out[1]:  
x,y  
 ^@^@^@,Reg  
 ^@^@^@,Reg  
I,Swp  
I,Swp  

In [2]: ! cat /tmp/test3.csv  
     x    y  
0  
1  NaN  NaN  
2    I  Swp  
3    I  Swp    

In [3]: f = open('/tmp/test3.csv', 'rb'); print(repr(f.read()))  
'x,y\n \x00\x00\x00,Reg\n \x00\x00\x00,Reg\nI,Swp\nI,Swp\n'
Run Code Online (Sandbox Code Playgroud)

python pandas

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

dlopen在boost python模块中失败

我的目标是使用boost python创建一个python扩展模块.问题是,当共享库中的代码使用dlopen访问同一个库中的符号时,它会失败(详情如下).看起来模块中的符号没有加载到python进程的符号表中

我在共享库myTest.so中有以下代码

// File 1
extern "C" void target_func() {
    std::cout << "Works!" << std::endl;
}

// File 2
typedef void (*Func) ();
void run() {
    void *handle = dlopen(0, RTLD_NOW | RTLD_GLOBAL)
    Func *method = (Func *)dlsym(handle, "target_func");
    // check if method is NULL and fail
}
Run Code Online (Sandbox Code Playgroud)

它包含在一个boost python模块中,如图所示 -

BOOST_PYTHON_MODULE(myTest) {
    def("run", run);
}
Run Code Online (Sandbox Code Playgroud)

导入python模块并执行时,上面的代码失败

import myTest
myTest.run()

undefined symbol: target_func
Run Code Online (Sandbox Code Playgroud)

但是当我将myTest.so与调用run的main函数链接时,没有问题

int main(int argc, char **argv) {
    run();
}

Output: Works!
Run Code Online (Sandbox Code Playgroud)

python boost dlopen boost-python

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

标签 统计

python ×2

boost ×1

boost-python ×1

dlopen ×1

metaprogramming ×1

pandas ×1

r ×1