如何处理 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         x3

1   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 x3

NA 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 Response

1  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 Response

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

要使用 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

回到顶部