用rpy2省略NA行

2024-04-27 23:09:52 发布

您现在位置:Python中文网/ 问答频道 /正文

这在普通R中很容易实现。对于名为counts的数据帧和名为hgnc的列,它将是:

counts <- na.omit(hgnc)

如何在rpy2中实现同样的目标?据我所知,似乎没有nau省略函数。在

我试图根据字段是否为"<NA>"进行选择,但得到了令人恼火的不一致结果:

^{pr2}$

注意,它使用==查找包含<NA>的行,但是当我搜索不包含<NA>的行时,它只会找到每一行。当我搜索“”而不是"<NA>"时,不会发生同样的情况:

print r.dim(counts.rx(counts.rx2('hgnc').ro == "", True))
[1] 27979    12
print r.dim(counts.rx(counts.rx2('hgnc').ro != "", True))
[1] 42370    12

Tags: 数据true目标rorxprintnadim
2条回答

为了将来的参考,可以通过使用ro.r("na.omit")(...)调用名称中带有句点“.”的R函数,其中...是python变量的列表。例如:

In [1]: from rpy2 import robjects as ro

In [2]: x = ro.r("c(1,2,NA)")

In [3]: x
Out[3]: 
<FloatVector - Python:0x1073ab758 / R:0x7fbafba8b520>
[1.000000, 2.000000, NA_real_]

In [4]: ro.r("na.omit")(x)
Out[4]: 
<FloatVector - Python:0x1073b3f80 / R:0x7fbafaa415f8>
[1.000000, 2.000000]

您可以使用rpy2.robjects运行任何R代码:

import rpy2.robjects as ro

# R SCRIPT
ro.r.source('yourRscript.R')

# R DATA FRAME
ro.globalenv['counts']

# OMIT NA ROWS
ro.r('na.omit(counts$hgnc)')

相关问题 更多 >