【问题标题】:How to create an empty R vector to add new items如何创建一个空的 R 向量来添加新项目
【发布时间】:2011-03-25 17:46:31
【问题描述】:

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

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

【问题讨论】:

    标签: python r vector rpy2


    【解决方案1】:
    vec <- vector()
    

    另见矢量帮助

    ?vector
    

    【讨论】:

      【解决方案2】:

      我预先分配了一个向量

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

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

      【讨论】:

      • 如果从一开始就知道向量的长度,这是最好的答案,因为它将是最节省内存的
      【解决方案3】:

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

      vec <- numeric(0)
      

      然后使用 c() 添加元素

      vec <- c(vec, 1:5)
      

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

      【讨论】:

      • 我喜欢您使用 numeric() 的解决方案,但我的经验使我使用 NA 而不是 0(如果您使用 numeric(2),您将得到 0 0)。但这是我个人的喜好。
      • 非常感谢!!但是是否有可能在添加一个新元素后释放前一个元素?我应该简单地使用 rm() 吗?
      • 还有一个问题,typeof(numeric(0)) 给出“double”,而想要的元素给出“integer”,添加时出现错误,提示“新值的类型不能不同”,如何转换?
      • 在python中工作时,“as”是关键字,另外python没有这种数据类型,所以我认为“as.integer”行不通?
      • romunov - numeric(0) 表示创建一个长度为 0 的数字向量(即没有元素),而不是一个长度为 1 且该元素为 0 的向量
      【解决方案4】:

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

      vec <- c();
      

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

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

      例如,添加数值 1:

      vec <- c(vec, 1);
      

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

      vec <- c(vec, "a");
      

      【讨论】:

      • 你真的试过这个吗? vec &lt;- c() 将 vec 设置为 NULL。如果你想要一个空向量,你可以使用vec &lt;- character()vec &lt;- numeric() 等。
      【解决方案5】:

      我也见过

      x <- {}
      

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

      rbind(x, 1:10)
      cbind(x, 1:10)
      c(x, 10)
      

      【讨论】:

      • 这与x &lt;- NULL 完全相同,除了对nowhere 的引用之外不会创建任何其他内容。
      【解决方案6】:

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

      newVector &lt;- vector(mode = "numeric", length = 50)

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

      aVector &lt;- c(aVector, newScalar)

      【讨论】:

        【解决方案7】:

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

        对于创建向量,如果您熟悉 Python,应该不会有任何问题。 请参阅有关creating vectors的文档

        【讨论】:

        • 我曾经为此在python中创建了一个函数,这非常复杂,我不确定它的应用范围有多广。现在我认为有了这个运营商,生活会更轻松:)
        猜你喜欢
        • 2019-09-09
        • 1970-01-01
        • 2021-01-17
        • 2012-03-13
        • 1970-01-01
        • 2020-11-30
        • 2022-06-28
        • 1970-01-01
        • 2022-01-07
        相关资源
        最近更新 更多