R can';t针对大数据帧将NaN转换为NA

R can';t针对大数据帧将NaN转换为NA,r,nan,na,R,Nan,Na,我有一个相当大的数据集,大约60列,意外地填充了NaN,而不是NA。列类型是字符、数字、因子和整数的混合。我需要将NaN转换为NA,因为他们在包括线性回归在内的多个函数上的工作都搞砸了。我知道如何更改此问题中的单个列: 但是我很好奇,是否有一种方法可以在不丢失向量类型的情况下对完整的数据帧执行此操作。有什么建议吗?这是手工作业吗?会的 gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE, fixed = FA

我有一个相当大的数据集,大约60列,意外地填充了
NaN
,而不是
NA
。列类型是字符、数字、因子和整数的混合。我需要将
NaN
转换为
NA
,因为他们在包括线性回归在内的多个函数上的工作都搞砸了。我知道如何更改此问题中的单个列:

但是我很好奇,是否有一种方法可以在不丢失向量类型的情况下对完整的数据帧执行此操作。有什么建议吗?这是手工作业吗?

会的

gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,
     fixed = FALSE, useBytes = FALSE)
工作

也许您需要与
apply
混合使用。你能提供一个小例子让我试着实现它吗

谢谢。

这样行吗?(它应适用于数字、整数、字符和因子向量。)

as.data.frame(lappy(数据),函数(col){

如果(is.numeric(col)){is.na(col)使用上述示例数据集。请尝试以下操作:

CMBv = colnames(dat)

dat[CMBv] = lapply(dat[CMBv], function(x){ifelse(is.nan(x), NA,x)} )

我可能有点小气,但我注意到你没有接受这个问题的任何答案。@DWin:你说得对,谢谢你的提醒。
CMBv = colnames(dat)

dat[CMBv] = lapply(dat[CMBv], function(x){ifelse(is.nan(x), NA,x)} )