如何处理 R 中应用的 NA 输出?
当我们在数值列和字符列上使用 apply 函数时,函数的输出都返回 NA,因此为了解决这个问题,我们可以使用 lapply 函数。lapply 函数将独立考虑每一列,因此,算术运算将单独执行。
查看下面给出的示例以了解它是如何工作的。
示例 1
以下代码段创建了一个示例数据框 -
x1<-rnorm(20)x2<-rnorm(20)
x3<-LETTERS[1:20]
df1<-data.frame(x1,x2,x3)
df1
创建以下数据框 -
x1 x2 x31 1.8023520 0.02949008 A
2 -0.6755818 0.03066978 B
3 0.8067009 -1.42504773 C
4 -0.6978446 -0.03589390 D
5 -0.9768782 -2.29225371 E
6 0.7589207 -0.56158056 F
7 1.4361048 0.05587417 G
8 2.2569459 -1.64800771 H
9 1.0998291 -0.67096333 I
10 -0.7250079 1.02007341 J
11 -1.6972296 0.25851780 K
12 2.6042033 1.13646450 L
13 1.3473008 -0.24734074 M
14 0.5262951 -0.56210383 N
15 -0.4576343 0.32515395 O
16 1.2211340 1.18324358 P
17 0.3792386 -0.52471110 Q
18 -0.8220452 0.28614199 R
19 -0.5467174 -1.88444207 S
20 -0.7032419 -1.01928201 T
为了使用 apply 函数查找 df1 中所有列的平均值,请将以下代码添加到上述代码段中 -
x1<-rnorm(20)输出结果x2<-rnorm(20)
x3<-LETTERS[1:20]
df1<-data.frame(x1,x2,x3)
apply(df1,2,mean)
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -
x1 x2 x3NA NA NA
Warning messages:
1: In mean.default(newX[, i], ...) :
argument is not numeric or logical: returning NA
2: In mean.default(newX[, i], ...) :
argument is not numeric or logical: returning NA
3: In mean.default(newX[, i], ...) :
argument is not numeric or logical: returning NA
正确的方法是使用 lapply 而不是 apply。将以下代码添加到上述代码段中 -
x1<-rnorm(20)输出结果x2<-rnorm(20)
x3<-LETTERS[1:20]
df1<-data.frame(x1,x2,x3)
lapply(df1,mean)
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -
$x1[1] 0.3468422
$x2
[1] -0.3272999
$x3
[1] NA
Warning message:
In mean.default(X[[i]], ...) :
argument is not numeric or logical: returning NA
示例 2
以下代码段创建了一个示例数据框 -
ID<-letters[1:20]Response<-rpois(20,5)
df2<-data.frame(ID,Response)
df2
创建以下数据框 -
ID Response1 a 8
2 b 5
3 c 4
4 d 4
5 e 4
6 f 2
7 g 3
8 h 4
9 i 6
10 j 3
11 k 6
12 l 2
13 m 5
14 n 3
15 o 4
16 p 7
17 q 6
18 r 6
19 s 6
20 t 7
要使用 apply 函数查找 df2 中所有列的平均值,请将以下代码添加到上述代码段中 -
ID<-letters[1:20]输出结果Response<-rpois(20,5)
df2<-data.frame(ID,Response)
apply(df2,2,mean)
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -
ID ResponseNA NA
Warning messages:
1: In mean.default(newX[, i], ...) :
argument is not numeric or logical: returning NA
2: In mean.default(newX[, i], ...) :
argument is not numeric or logical: returning NA
要使用 apply 函数查找 df2 中所有列的平均值,请将以下代码添加到上述代码段中 -
ID<-letters[1:20]输出结果Response<-rpois(20,5)
df2<-data.frame(ID,Response)
lapply(df2,mean)
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -
$ID[1] NA
$Response
[1] 4.75
Warning message:
In mean.default(X[[i]], ...) :
argument is not numeric or logical: returning NA
以上是 如何处理 R 中应用的 NA 输出? 的全部内容, 来源链接: utcz.com/z/357850.html