The **dnorm()** function gives the density. The **pnorm()** function gives the distribution function. The **qnorm()** function gives the quantile function. The rnorm() function generates random deviates.

**dnorm in r**

The **dnorm in r** is a built-in function that calculates the density function with a mean($μ)$ and standard deviation($σ)$ for any value of **x****$σ$**. The dnorm() function takes a **vector**, **mean**, **sd**, and **log** as arguments and returns the **Probability** **Density** **Function**.

For a discrete distribution (like the binomial), use the **dnorm()** **function** to calculate the density (p. f.), which in this case is a probability.

**Syntax**

`dnorm(x, mean = 0, sd = 1, log = FALSE)`

**Parameters**

**x:** vector of quantiles.

**mean:** vector of means.

**sd:** vector of standard deviation.

**log, log.p:** logical; if **TRUE**, probabilities p are given as log(p).

If the **mean** and **sd** are not specified, they assume the default values of 0 and 1, respectively.

**Example**

`dnorm(0, mean = 0, sd = 1)`

**Output**

```
dt <- dnorm(0, mean = 0, sd = 1)
dt
```

**Output**

`[1] 0.3989423`

The dnorm of 0 is the following.

```
dt <- dnorm(0)
dt
```

**Output**

`[1] 0.3989423`

Let’s find the value of the normal distribution pdf at x=10 with mean=20 and sd=5.

```
dt <- dnorm(x=10, mean=20, sd=5)
dt
```

**Output**

`[1] 0.01079819`

Let’s find the dnorm() of 1:3.

`dnorm(1:3)`

**Output**

`[1] 0.241970725 0.053990967 0.004431848`

**Creating a plot based on the dnorm() function**

The most powerful application of the **dnorm() **function is that it is in creating a normal distribution plot in R.

Let’s create a sequence using the seq() function.

```
data <- seq(-3, 3, length = 30)
dt <- dnorm(data)
dt
```

**Output**

```
[1] 0.004431848 0.008069595 0.014077583 0.023529569 0.037679866 0.057811501
[7] 0.084982332 0.119688537 0.161505004 0.208799242 0.258631467 0.306932813
[13] 0.348991450 0.380185689 0.396813332 0.396813332 0.380185689 0.348991450
[19] 0.306932813 0.258631467 0.208799242 0.161505004 0.119688537 0.084982332
[25] 0.057811501 0.037679866 0.023529569 0.014077583 0.008069595 0.004431848
```

Now, let’s create a plot based on these values.

```
data <- seq(-3, 3, length = 30)
dt <- dnorm(data)
plot(data, dt, type = "l", lwd = 1.5, axes = FALSE, xlab = "", ylab = "")
axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))
```

**Output**

**Find the Area Under the Normal Density Curve**

The total area under any normal density curve is always equal to one. Let’s see an example of that.

```
x <- seq(-3, 3, length = 200)
y <- dnorm(x, mean = 0, sd = 1)
plot(x, y, type = "l")
x <- seq(-3, 0, length = 100)
y <- dnorm(x, mean = 0, sd = 1)
polygon(c(-3, x, 0), c(0, y, 0), col = "blue")
```

**Output**

Now, because the total area under the curve is 1, and because of the symmetry, the area to the left of μ=0 should be 0.5.

That is it for the dnorm() function in R.

**See also**

Krunal Lathiya is an Information Technology Engineer by education and web developer by profession. He has worked with many back-end platforms, including Node.js, PHP, and Python. In addition, Krunal has excellent knowledge of Data Science and Machine Learning, and he is an expert in R Language. Krunal has written many programming blogs, which showcases his vast expertise in this field.