小编uda*_*day的帖子

在RCpp中将DataFrame转换为Matrix的最佳方法

我有一个RCpp代码,在我试图将DataFrame转换为Matrix的代码的一部分.DataFrame只有数字(没有字符串或日期).

以下代码有效:

//[[Rcpp::export]]
NumericMatrix testDFtoNM1(DataFrame x) {
  int nRows=x.nrows();  
  NumericMatrix y(nRows,x.size());
  for (int i=0; i<x.size();i++) {
    y(_,i)=NumericVector(x[i]);
  }  
  return y;
}
Run Code Online (Sandbox Code Playgroud)

我想知道as.matrix在RCpp中是否有替代方式(即R中的等价物)来做同样的事情,类似于下面的代码(这不起作用):

//[[Rcpp::export]]
NumericMatrix testDFtoNM(DataFrame x) {
  NumericMatrix y(x);  
  return y;
}
Run Code Online (Sandbox Code Playgroud)

*编辑*

谢谢你的回答.正如Dirk所说,C++代码比两个答案中的任何一个快24倍,Function版本比internal::convert_using_rfunction版本快2%.

我最初在没有打电话给R的情况下寻找RCpp的答案.当我发布我的问题时,我应该说清楚.

r rcpp

9
推荐指数
2
解决办法
1577
查看次数

cython编译 - import vs cimport

新手到Cython(也许这是一个基本问题).考虑这个博客中的两个例子:

# code 1
import numpy as np

def num_update(u):
    u[1:-1,1:-1] = ((u[2:,1:-1]+u[:-2,1:-1])*dy2 + 
                    (u[1:-1,2:] + u[1:-1,:-2])*dx2) / (2*(dx2+dy2))
Run Code Online (Sandbox Code Playgroud)

# code 2
cimport numpy as np

def cy_update(np.ndarray[double, ndim=2] u, double dx2, double dy2):
    cdef unsigned int i, j
    for i in xrange(1,u.shape[0]-1):
        for j in xrange(1, u.shape[1]-1):
            u[i,j] = ((u[i+1, j] + u[i-1, j]) * dy2 +
                      (u[i, j+1] + u[i, j-1]) * dx2) / (2*(dx2+dy2))
Run Code Online (Sandbox Code Playgroud)

假设我使用以下setup.py脚本编译第一个文件:

# setup file for code 1
from …
Run Code Online (Sandbox Code Playgroud)

cython python-3.x

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

Julia Studio中的Julia版本

(a)我有Julia Studio 0.4.3,我的安装(Windows)中的库设置指向C:/Program Files (x86)/JuliaStudio-0.4.3/julia-studio/Julia.在该目录中,我发现julia-basic.exe,julia-debug.exe,julia-debug-readline.exejulia-readline.exe.我没找到julia.exe那个文件夹.

如果我在Julia studio中写一个Julia文件,但后来我想cmd在线或bat文件中运行它,exe我应该使用哪个?

如果我想从cmd行或bat文件(Windows)运行Julia,是否需要单独安装Julia ?

(b)朱莉娅文件也说我可以选择启动朱莉娅-p n(n工人数量在哪里).在Julia Studio中可以做到这一点吗?

julia julia-studio

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

将ascii数转换为R中的字符串

要将字符串转换为R中的ascii代码,我通常使用:

> strtoi(charToRaw("abcd"),16L)
[1] 97 98 99 100
Run Code Online (Sandbox Code Playgroud)

是否存在反函数,即

>myDesiredFunc(c(97 98 99 100)) 
[1] "abcd"
Run Code Online (Sandbox Code Playgroud)

谢谢.

r

8
推荐指数
2
解决办法
3884
查看次数

在Rcpp中按列排序数据帧

是否有任何简单的方法可以通过RCpp中的两个(或多个或一个)列来订购DataFrame?

网上有很多排序算法,或者我可以使用std::sortDataFrame的包装器,但我想知道RCpp或RCppArmadillo中是否有可用的东西?

我需要将此排序/排序作为另一个函数的一部分

DataFrame myFunc(DataFrame myDF, NumericVector x) {
  //// some code here
  DataFrame myDFsorted = sort (myDF, someColName1, someColName2) // how to sort??
  //// some code here
}
Run Code Online (Sandbox Code Playgroud)

我想避免order在RCpp中访问R的功能(为了保持RCpp代码的速度).

非常感谢

r rcpp

8
推荐指数
2
解决办法
1253
查看次数

Rcpp - 如何检查任何属性是否为NULL

我有一个Rcpp接受NumericMatrix并返回NumericVector的函数.在我的代码中,我有一条基于Kevin Ushey的建议:在Rcpp中 - 如何返回一个名称为NumericMatrix的列名分配给NumericMector的向量:

out.attr("names")=VECTOR_ELT(inp.attr("dimnames"),1)

如果NumericMatrix没有列名,则此代码会出错,即colnames(inp)=NULL.. 我怎么可以检查Rcpp是否VECTOR_ELT(inp.attr("dimnames"),1)NULL

r rcpp

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

通过绕过Excel在Python中通过DDE获取数据

我有一个数据提供程序,它提供了一个DDE链接(我可以在Excel中使用)和一个在后台运行的exe文件,它充当数据管理器(不确定这是否称为DDE服务器)和DDE链接连接到该exe文件.

我想绕过Excel并直接在Python中工作.我看到了一些关于DDE的例子,但它们都在Python 2中,我使用的是Python 3.

我在网上看到了一些例子:

import win32ui
import dde
...
...
server = dde.CreateServer()
server.Create("SomeName")
...
Run Code Online (Sandbox Code Playgroud)

但这些示例显示了如何创建DDE服务器.在我的情况下,有一个现有的exe是数据管理器(DDE服务器可能是?),在Excel中有一个菜单,我可以通过它来获取数据,如

' = DataProviderFunc1(Param1, Param2)'
' = DataProviderFunc2(Param1, Param2)'
Run Code Online (Sandbox Code Playgroud)

我想在Python中编写一个直接输出' = DataProviderFunc1(Param1, Param2)'等的代码,而不是打开Excel工作表,然后让Python读取Excel工作表的输出.

这可能吗?

我使用的是Python 3.4.谢谢

DDE模块上的文档似乎很少,例如http://docs.activestate.com/activepython/2.4/pywin32/dde.html

pywin32 dde python-3.x

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

相当于 Pandas Series / DataFrame 的 gsub

Python '或的 R sub/gsub函数的等价物是什么?pandasSeriesDataFrame

例如,在 R 中,我的代码是

schData<-gsub("/"," by ",schData,ignore.case=F)
Run Code Online (Sandbox Code Playgroud)

schData上面的Python 中的等效操作如下:

>>> type(schData)
Out[N]: pandas.core.series.Series
Run Code Online (Sandbox Code Playgroud)

对于常规字符串,有re.sub函数但似乎只适用于字符串

r python-3.x

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

带字符串列的HDFStore会产生问题

我有一个熊猫数据帧myDF的几个字符串列(其dtypeobject)和许多数字列.我尝试了以下方法:

d=pandas.HDFStore("C:\\PF\\Temp.h5")
d['test']=myDF
Run Code Online (Sandbox Code Playgroud)

我得到了这个结果:

C:\PF\WinPython-64bit-3.3.3.3\python-3.3.3.amd64\lib\site-packages\pandas\io\pytables.py:2446: PerformanceWarning: 

your performance may suffer as PyTables will pickle object types that it cannot
map directly to c-types [inferred_type->mixed,key->block2_values] 
[items->[0, 1, 3, 4, 5, 6, 9, 10, 292, 411, 412, 477, 478, 479, 495, 572, 581, 590, 599, 608, 617, 626, 635]]

  warnings.warn(ws, PerformanceWarning)
Run Code Online (Sandbox Code Playgroud)

看起来每个列都是一个字符串的问题.例如,如果我尝试

myDF[0].dtype
Run Code Online (Sandbox Code Playgroud)

我明白了

Out[38]: dtype('O')
Run Code Online (Sandbox Code Playgroud)

如何解决问题,即更改dtypefor string列,以便HDFStore可以将其视为字符串列?

*编辑*

更多信息请求

>>> pandas.__version__
Out[49]: '0.13.1'

>>> tables.__version__
Out[53]: '3.1.0'
Run Code Online (Sandbox Code Playgroud)

构建pandas数据框如下:

pandas.read_csv(fName,sep="|",header=None,low_memory=False)
Run Code Online (Sandbox Code Playgroud)

当我尝试

myDF.info()
Run Code Online (Sandbox Code Playgroud)

我明白了

Int64Index: …
Run Code Online (Sandbox Code Playgroud)

pytables python-3.x pandas

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

内联函数代码无法编译

我正在尝试使用该inline库.

我尝试了http://adv-r.had.co.nz/C-interface.html上给出的第一个例子

library(inline)

add <- cfunction(signature(a = "integer", b = "integer"), "
  SEXP result;

  PROTECT(result = allocVector(REALSXP, 1));
  REAL(result)[0] = asReal(a) + asReal(b);
  UNPROTECT(1);

  return(result);
")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Warning message:
running command 'make -f "C:/PROGRA~1/R/R-30~1.3/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-30~1.3/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="file21e05c17451a.dll" WIN=64 TCLBIN=64 OBJECTS="file21e05c17451a.o"' had status 127 

ERROR(s) during compilation: source code errors or compiler configuration errors!

Program source:
  1: #include <R.h>
  2: #include <Rdefines.h>
  3: #include <R_ext/Error.h>
  4: 
  5: 
  6: extern "C" {
  7:   SEXP file21e05c17451a ( …
Run Code Online (Sandbox Code Playgroud)

r windows-7

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

标签 统计

r ×6

python-3.x ×4

rcpp ×3

cython ×1

dde ×1

julia ×1

julia-studio ×1

pandas ×1

pytables ×1

pywin32 ×1

windows-7 ×1