将is.infinite()应用于R中的数据帧的方法
我想知道为什么我不能将is.infinite()应用于数据帧,就像我可以将is.na应用于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
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