- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to deal with NA output of apply in R?
When we use apply function on numerical as well as character column then the output of the function returns NA for all hence to deal with this problem, we can use lapply function. The lapply function will take each column into account independently, therefore, the arithmetic operations will be performed individually.
Check out the below given examples to understand how it works.
Example 1
Following snippet creates a sample data frame −
x1<-rnorm(20) x2<-rnorm(20) x3<-LETTERS[1:20] df1<-data.frame(x1,x2,x3) df1
The following dataframe is created −
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
In order to find the mean of all columns in df1 using apply function, add the following code to the above snippet −
x1<-rnorm(20) x2<-rnorm(20) x3<-LETTERS[1:20] df1<-data.frame(x1,x2,x3) apply(df1,2,mean)
Output
If you execute all the above given snippets as a single program, it generates the following output −
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
The correct way is to use lapply instead of apply. Add the following code to the above snippet −
x1<-rnorm(20) x2<-rnorm(20) x3<-LETTERS[1:20] df1<-data.frame(x1,x2,x3) lapply(df1,mean)
Output
If you execute all the above given snippets as a single program, it generates the following output −
$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
Example 2
Following snippet creates a sample data frame −
ID<-letters[1:20] Response<-rpois(20,5) df2<-data.frame(ID,Response) df2
The following dataframe is created −
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
To find the mean of all columns in df2 using apply function, add the following code to the above snippet −
ID<-letters[1:20] Response<-rpois(20,5) df2<-data.frame(ID,Response) apply(df2,2,mean)
Output
If you execute all the above given snippets as a single program, it generates the following output −
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
To find the mean of all columns in df2 using apply function, add the following code to the above snippet −
ID<-letters[1:20] Response<-rpois(20,5) df2<-data.frame(ID,Response) lapply(df2,mean)
Output
If you execute all the above given snippets as a single program, it generates the following output −
$ID [1] NA $Response [1] 4.75 Warning message: In mean.default(X[[i]], ...) : argument is not numeric or logical: returning NA
- Related Articles
- How to deal with glm.fit error “NA/NaN/Inf” for logistic regression model in R?
- How to subset R data frame rows and keep the rows with NA in the output?
- How to deal with “could not find function” error in R?
- How to find the column mean by excluding NA’s and if all values are NA then output NA in R data frame?
- How to deal with missing values to calculate correlation matrix in R?
- How to replace 0 with NA in an R matrix?
- How to deal with error invalid xlim value in base R plot?
- How to deal with error “$ operator is invalid for atomic vectors” in R?
- How to deal with error “undefined columns selected” while subsetting data in R?
- How to deal with hist.default, 'x' must be numeric in R?
- How to deal with Garbage?
- How to replace NA values with zeros in an R data frame?
- How to deal with error “undefined columns selected when subsetting data frame” in R?
- How to Deal With Team Attrition
- How to deal with stubborn children?
