将is.infinite()应用于R中的数据帧的方法

将is.infinite()应用于R中的数据帧的方法,r,dataframe,R,Dataframe,我想知道为什么我不能将is.infinite()应用于数据帧,就像我可以将is.na应用于R中的数据帧一样: data[is.infinite(data)]<-0 Error in is.infinite(data) : default method not implemented for type 'list' data[is.na(data)] <-0 data[is.infinite(data)]这里有一种方法,使用lappy和ifelse: # create dat

我想知道为什么我不能将is.infinite()应用于数据帧,就像我可以将is.na应用于R中的数据帧一样:

data[is.infinite(data)]<-0
Error in is.infinite(data) : 
  default method not implemented for type 'list'

data[is.na(data)] <-0

data[is.infinite(data)]这里有一种方法,使用
lappy
ifelse

# create data.frame
df <- data.frame(a=1:10, b=letters[1:10], c=rnorm(10))
df$a[c(2,6)] <- Inf
df$c[c(3,9)] <- Inf

# take care of those infs:
df[] <- lapply(df, function(i) if(is.numeric(i)) ifelse(is.infinite(i), 0, i) else i)
#创建data.frame

df正如@Imo所说的那样,
is.na()
已设置为在列表/data.frames上工作,而
is.infinite()
只能在向量上工作。但是,您可以通过使用
sapply()
来解决此问题:

df[sapply(df,simplify='matrix',is.infinite)]
df[sapply(df, simplify = 'matrix', is.infinite)] <- 0