[英]Passing at once all columns of a data frame as arguments for a function (R)
[英]Cleaning all columns of Data Frame at once in R
我正在尝试编写一行或两行代码,以查看数据帧中的每一列是否包含任何空白或非数字值,例如N/A
或NaN
,并将其替换为0
。
这里有一些尝试:
给定一个数据框= df,总列数为n,我尝试过:
df[,c(1:n)]<-sub("NaN","0",df[,c(1:n)])
这是一个尝试过滤整个数据帧的尝试:
df[df[,c(1:n)]=='NaN',"c(1:n)"]
我的目标是不使用for循环就可以做到这一点。
您可以使用is.finite()
:
df[!is.finite(df)] <- 0
尝试df[is.na(df)] <- 0
和df[df == NaN] <- 0
如果使用data.table包,则可以使用.SDcols进行此操作。 拥有数据会更干净,但是有了一些随机数据,我们可以复制它们。
library(data.table)
DT <- data.table(a = rep(c(1,NA),20),
b = rep(c(NA,2),20))
DT[,lapply(.SD,function(x) ifelse(is.na(x), 0, x))]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.