首页 > 解决方案 > lapply 在 R 中进行第二次迭代

问题描述

我有两个列表,一个包含 2 个 data.frames,另一个包含 2 个向量。

我需要将 data.frames 中的列名设置为另一个列表中的向量,我似乎无法理解如何使用 lapply 来做到这一点。

可重现的例子:

set.seed(1)
df1 <- data.frame(
  X = sample(1:10),
  Y = sample(c("yes", "no"), 10, replace = TRUE)
)

df2 <- data.frame(
    Z = sample(LETTERS,10),
    X = sample(1:10),
    Y = sample(c("yes", "no"), 10, replace = TRUE)
)
dataframes <- list(df1, df2)
columns <- list(c("numbers", "boolean"),c("letters", "numbers", "boolean"))

数据框的列数不同,我的原始数据中的列名也有很大不同。我一直在尝试做的是使用 lapply 将列列表映射为数据框的列名,但我需要遍历columns并且我不知道该怎么做。

标签: rlapply

解决方案


Map(setNames, dataframes, columns)

# [[1]]
#    numbers boolean
# 1        3     yes
# 2        4     yes
# 3        5      no
# 4        7     yes
# 5        2      no
# 6        8     yes
# 7        9      no
# 8        6      no
# 9       10     yes
# 10       1      no
# 
# [[2]]
#    letters numbers boolean
# 1        Y       5      no
# 2        F       6      no
# 3        P       4      no
# 4        C       2      no
# 5        Z      10      no
# 6        I       8      no
# 7        A       9     yes
# 8        H       1     yes
# 9        X       7      no
# 10       V       3      no

推荐阅读