stackoverflowuser2010 - 8 months ago 47

R Question

I have loaded data into a dataframe using

`read.csv()`

How do I determine the data type of each column in the data frame?

Answer

Your best bet to start is to use ?str(). To explore some examples, let's make some data:

```
set.seed(3221) # this makes the example exactly reproducible
my.data <- data.frame(y=rnorm(5),
x1=c(1:5),
x2=c(TRUE, TRUE, FALSE, FALSE, FALSE),
X3=letters[1:5])
```

@Wilmer E Henao H's solution is very streamlined:

```
sapply(my.data, class)
y x1 x2 X3
"numeric" "integer" "logical" "factor"
```

Using `str()`

gets you that information plus extra goodies (such as the levels of your factors and the first few values of each variable):

```
str(my.data)
'data.frame': 5 obs. of 4 variables:
$ y : num 1.03 1.599 -0.818 0.872 -2.682
$ x1: int 1 2 3 4 5
$ x2: logi TRUE TRUE FALSE FALSE FALSE
$ X3: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5
```

@Gavin Simpson's approach is also streamlined, but provides slightly different information than `class()`

:

```
sapply(my.data, typeof)
y x1 x2 X3
"double" "integer" "logical" "integer"
```

For more information about `class`

, `typeof`

, and the middle child, `mode`

, see this excellent SO thread: A comprehensive survey of the types of things in R. 'mode' and 'class' and 'typeof' are insufficient.