103

我想在 Python 中使用 R,由模块 Rpy2 提供。我注意到 R 具有非常方便[]的操作,您可以通过这些操作提取特定的列或行。如何通过 Python 脚本实现这样的功能?

我的想法是创建一个 R 向量并将那些想要的元素添加到该向量中,以便最终向量与 R 中的相同。我创建了 a seq(),但它似乎有一个初始数字 1,所以最终结果总是从数字 1 开始,这不是我想要的。那么,有没有更好的方法来做到这一点?

4

7 回答 7

102
vec <- vector()

另请参阅矢量帮助

?vector
于 2010-08-05T12:14:26.457 回答
65

我预先分配了一个向量

> (a <- rep(NA, 10))
 [1] NA NA NA NA NA NA NA NA NA NA

然后,您可以使用 [] 将值插入其中。

于 2010-08-05T11:06:43.167 回答
28

您可以像这样创建一个空向量

vec <- numeric(0)

然后使用 c() 添加元素

vec <- c(vec, 1:5)

然而,正如 romunov 所说,预先分配一个向量然后填充它要好得多(因为这样可以避免每次添加元素时重新分配一个新的向量副本)

于 2010-08-05T12:00:21.007 回答
11

要创建一个空向量,请使用:

vec <- c();

请注意,我不会对您需要的向量类型(例如数字)做出任何假设。

创建矢量后,您可以向其中添加元素,如下所示:

例如,要添加数值 1:

vec <- c(vec, 1);

或者,添加一个字符串值“a”

vec <- c(vec, "a");
于 2013-12-20T10:35:19.850 回答
6

我也看过

x <- {}

现在您可以将任意维度的向量连接或绑定到x

rbind(x, 1:10)
cbind(x, 1:10)
c(x, 10)
于 2010-08-05T18:27:09.413 回答
4

正如 Brani 所指出的,vector() 是一种解决方案,例如

newVector <- vector(mode = "numeric", length = 50)

将返回一个名为“newVector”的向量,其中 50 个“0”作为初始值。将新标量添加到现有向量以获得扩展向量也很常见,例如

aVector <- c(aVector, newScalar)

于 2013-11-24T05:41:16.293 回答
3

在 rpy2 中,使用 R 获得与“[”相同的运算符的方法是使用“.rx”。请参阅有关使用 rpy2 进行提取的文档

对于创建向量,如果您了解 Python 的使用方法,则应该没有任何问题。请参阅有关创建向量的文档

于 2010-08-06T15:25:32.807 回答