如何在 r 中使用 map() 函数(附示例)


R 中purrr包的map()函数可用于将函数应用于向量或列表的每个元素,并相应地返回列表。

该函数使用以下基本语法:

地图(.x,.f)

金子:

  • .x :向量或列表
  • .f :一个函数

以下示例展示了如何在不同场景下使用该功能。

示例1:使用map()生成随机变量

下面的代码展示了如何使用map()函数生成三个随机变量,每个变量包含五个遵循标准正态分布的值:

 library (purrr)

#definevector
data <- 1:3

#apply rnorm() function to each value in vector
data %>%
  map( function (x) rnorm(5, x))

[[1]]
[1] 0.0556774 1.8053082 2.6489861 2.2640136 1.1062672

[[2]]
[1] 1.450175 1.123048 3.413677 3.055304 2.713801

[[3]]
[1] 2.936732 2.157129 3.693738 2.994391 2.567040

对于原始向量的每个元素, map()函数应用rnorm()函数从标准正态分布生成五个随机值。

示例2:使用map()将每个值转换为向量

下面的代码展示了如何使用map()函数来计算向量中每个值的平方:

 library (purrr)

#definevector
data <- c(2, 4, 10, 15, 20)

#calculate square of each value in the vector
data %>%
  map( function (x) x^2)

[[1]]
[1] 4

[[2]]
[1] 16

[[3]]
[1] 100

[[4]]
[1] 225

[[5]]
[1] 400

对于原始向量的每个元素, map()函数应用一个计算每个值的平方的函数。

示例3:使用map()计算列表中每个向量的平均值

下面的代码展示了如何使用map()函数来计算列表中每个向量的平均值:

 library (purrr)

#define list of vectors
data <- list(c(1, 2, 3),
             c(4, 5, 6),
             c(7, 8, NA))

#calculate mean value of each vector in list
data %>%
  map(mean, na. rm = TRUE )

[[1]]
[1] 2

[[2]]
[1] 5

[[3]]
[1] 7.5

对于列表中的每个向量, map()函数计算平均值。

从结果我们可以看出:

  • 列表中第一个向量的平均值是2
  • 列表中第二个向量的平均值是5
  • 列表中第三个向量的平均值是7.5

注意:参数na.rm=TRUE告诉 R 在计算平均值时忽略 NA 值。

其他资源

以下教程解释了如何使用 R 中的其他常用函数:

如何在 R 中使用 tapply() 函数
如何在 R 中使用 dim() 函数
如何在 R 中使用 table() 函数
如何在R中使用sign()函数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注