我是R的新手,我决定将R放在我拥有的机器上,看看我是否可以远程运行台式机上的代码.
在搜索"怎么做"时,我遇到了"Rserve"和"RStudio"的名字.据我所知,RServe是一个包(实际上,这似乎是在包),我可以用它来配置服务器,而RStudio是IDE.
我的问题是:RStudio"引擎盖下"使用RServe吗?而且,如果没有,那么RStudio与RServe相比如何呢?(即,哪一个更好,为什么?)
[我发现这个问题可能是重复的,但我找不到任何类似的问题]
我有一个程序,我想从字符串中删除空格.我想找到一个优雅的方式来做到这一点,所以我发现下面的(我已经改变了它一点,所以它可能是更好的可读性)代码在一个论坛:
char* line_remove_spaces (char* line)
{
char *non_spaced = line;
int i;
int j = 0;
for (i = 0; i <= strlen(line); i++)
{
if ( line[i] != ' ' )
{
non_spaced[j] = line[i];
j++;
}
}
return non_spaced;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,该函数采用一个字符串,并使用相同的已分配内存空间,仅选择非间隔字符.有用!
无论如何,根据维基百科,C中的字符串是"以空字符结尾的字符串 ".我总是这么想,一切都很好.但问题是:我们在non_spaced字符串的末尾没有放置"null-character" .并且不知何故,编译器知道它以"non_spaced"字符串改变的最后一个字符结束.怎么知道的?
举个例子,在Matlab中假设一个a(2,3,2)像这样的矩阵:
a(:,:,1) =
1 2 3
4 5 6
a(:,:,2) =
7 8 9
10 11 12
Run Code Online (Sandbox Code Playgroud)
如果我mex按顺序使用和访问此矩阵的元素,我会得到以下顺序(最后,顺序访问它们的代码):
1, 4, 2, 5, 3, 6, 7, 10, 8, 11, 9, 12
Run Code Online (Sandbox Code Playgroud)
现在,如果我在numpy中有相同的矩阵
In [2]: np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
Out[2]:
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]]])
Run Code Online (Sandbox Code Playgroud)
,我可以尝试使用.flatten(...)顺序访问项目(找不到更好的方法来做到这一点 - 我愿意接受建议).flatten()有4个"订购"选项:
In [4]: a.flatten('F')
Out[4]: array([ 1, 7, 4, 10, 2, 8, 5, 11, 3, 9, 6, 12])
In [5]: …Run Code Online (Sandbox Code Playgroud) 我的问题与PyArray_SimpleNewFromData中的细分错误在精神上类似
我有一个看起来像这样的C代码:(原始代码实际上测试是否malloc()返回NULL)
1 #include <Python.h>
2 #include <numpy/arrayobject.h> // (Not sure if right import)
3 #include <stdlib.h>
4 #include <stdio.h>
5
6 double *calculate_dW(npy_intp *dim_w) {
7 int i;
8 double* data = (double*)malloc(sizeof(double) * dim_w[0]);
9
10 /* Inserts some dummy data */
11 for (i = 0; i < dim_w[0]; i++)
12 data[i] = i;
13
14 return data;
15 }
Run Code Online (Sandbox Code Playgroud)
然后是将其包装在函数中的Cython代码:
1 import cython
2 import numpy as np
3 cimport numpy as np …Run Code Online (Sandbox Code Playgroud)