方法3:在数据框的特定列中用NA替换Inf
df[c('col1', 'col2')][sapply(df[c('col1', 'col2')], is.infinite)] <- NA
本教程解释了如何在以下数据框架中实际使用每种方法。
#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
points=c(10, 10, 8, 14, 15, 15, 17, 17))
#view data frame
team position points
1 A G 10
2 A G 10
3 A F 8
4 A F 14
5 B G 15
6 B G 15
7 B F 17
8 B F 17
例1:用NA替换向量中的Inf
下面的代码显示了如何在一个向量中用NA值替换所有Inf值:
x <- c(4, 12, Inf, 8, Inf, 9, 12, 3, 22, Inf)
x[is.infinite(x)] <- NA
[1] 4 12 NA 8 NA 9 12 3 22 NA
注意,原向量中的所有Inf值都被替换成了NA值。
例2:在数据框的所有列中用NA替换Inf
下面的代码显示了如何在一个数据框的每一列中用NA值替换Inf值:
df <- data.frame(x=c(4, 5, 5, 4, Inf, 8, Inf),
y=c(10, Inf, Inf, 3, 5, 5, 8),
z=c(Inf, 5, 5, 6, 3, 12, 14))
x y z
1 4 10 Inf
2 5 Inf 5
3 5 Inf 5
4 4 3 6
5 Inf 5 3
6 8 5 12
7 Inf 8 14
df[sapply(df, is.infinite)] <- NA
x y z
1 4 10 NA
2 5 NA 5
3 5 NA 5
4 4 3 6
5 NA 5 3
6 8 5 12
7 NA 8 14
请注意,数据框中每一列的Inf值都被替换成了NA值。
例3:在数据框的特定列中用NA替换Inf
下面的代码显示了如何在数据框的特定列中用NA值替换Inf值:
df <- data.frame(x=c(4, 5, 5, 4, Inf, 8, Inf),
y=c(10, Inf, Inf, 3, 5, 5, 8),
z=c(Inf, 5, 5, 6, 3, 12, 14))
x y z
1 4 10 Inf
2 5 Inf 5
3 5 Inf 5
4 4 3 6
5 Inf 5 3
6 8 5 12
7 Inf 8 14
df[c('x', 'z')][sapply(df[c('x', 'z')], is.infinite)] <- NA
x y z
1 4 10 NA
2 5 Inf 5
3 5 Inf 5
4 4 3 6
5 NA 5 3
6 8 5 12
7 NA 8 14
注意,'x'和'y'列中的Inf值已经被替换成了NA值。
然而,"y "列中的Inf值却没有变化。