我有一个带有数字列的数据框.某些行的值为0,在统计分析中应视为空.将R中的所有0值替换为NULL的最快方法是什么?

推荐答案

将所有零替换为NA:

df[df == 0] <- NA



Explanation

1.你不应该用NULL来代替0.正如?'NULL'年所说,

NULL表示R中的NULL对象

这是独一无二的,我猜,可以被视为最缺乏信息和空洞的对象1那么

data.frame(x = c(1, NULL, 2))
#   x
# 1 1
# 2 2

也就是说,R不为这个空对象保留任何空间2同时,看看?'NA',我们看到了这一点

NA是长度为1的逻辑常数,其中包含缺失的值

重要的是,NA的长度为1,因此R为其保留了一些空间.例如.,

data.frame(x = c(1, NA, 2))
#    x
# 1  1
# 2 NA
# 3  2

此外,数据帧 struct 要求所有列具有相同数量的元素,以便不存在"孔"(即NULL个值).

现在,您可以在一个数据帧中将零替换为NULL,即完全删除包含至少一个零的所有行.当使用例如varcovcor时,这实际上相当于首先用NA替换零,并将use的值设置为"complete.obs".然而,这通常并不令人满意,因为它会导致额外的信息丢失.

2.在解决方案中,我使用df == 0矢量化,而不是运行某种循环.df == 0返回(try )一个与df大小相同的矩阵,其条目为TRUEFALSE.此外,我们还可以将该矩阵传递给子集[...](参见?'[').最后,虽然df[df == 0]的结果非常直观,但df[df == 0] <- NA给出了期望的效果似乎有些奇怪.赋值运算符<-确实并不总是那么聪明,并且不以这种方式处理其他一些对象,但它处理数据帧;见?'<-'.


1 The empty set in the set theory feels somehow related.
2 Another similarity with the set theory: the empty set is a subset of every set, but we do not reserve any space for it.

R相关问答推荐

计算转换的次数

如何判断R中一列的值是否在所有其他列中重复?

是否有R函数来判断一个组中的所有值是否与另一个组中的所有值相同?

无法在我的情节中表现出显着的差异

在通过最大似然估计将ODE模型与数据匹配时,为什么要匹配实际参数的转换值?

具有多个依赖变量/LHS的逻辑模型

多重RHS固定估计

将年度数据插入月度数据

如何将dygraph调用到R Markdown作为一个shiny 的react 对象的参数?

如何通过Docker部署我的shiny 应用程序(多个文件)

R Sapply函数产生的值似乎与for循环方法略有不同

错误:非常长的R行中出现意外符号

如何在geom_col中反转条

根据文本字符串中的值粘贴新列

移除仪表板Quarto中顶盖和车身之间的白色区域

有没有办法使用ggText,<;Sub>;&;<;sup>;将上标和下标添加到同一元素?

优化从每个面的栅格中提取值

如何将这个小列表转换为数据帧?

R预测包如何处理ARIMA(Auto.arima函数)中的缺失值

为什么不能使用lApply在包装函数中调用子集