R - 使用现有名称在 for 循环内分配

R - assign inside a for loop using existing name

我想使用 for 循环对数据框列表中的每个元素执行相同的操作。然后我想使用元素的原始名称分配这些名称。我想知道如果我只是重新分配相同的名称,或者分配带有后缀或前缀的旧名称,该怎么做。

我可以通过使用 paste0 添加新名称来实现,例如:

# load example data frames and add to list
data("iris")
data("cars")+
list_df <- list(iris, cars)

# create new list for manipulated data frames. Using head() as an example.
list_head < - list()

# for loop to take head of each data frame in list_df, assign iterative name and add to list_head
for (i in 1:length(list_df){
   temp <- head(list_df[[i]])
   new_list[[paste0("df_head",i)]] <- temp
}

我希望能够在基于迭代的循环中分配一个变量,其中分配的名称与旧名称相同,and/or 旧名称加上 suffix/prefix ,例如“cars_head”。添加到列表部分并不重要,但如果也能直接完成,那就太好了。

我认为这是一种更 R-like 的方法...

data("iris")
data("cars")

library(tibble)
#create a list with names of the elements
list_df <- tibble::lst(iris, cars)
#get head of list's elements
new_list <- lapply(list_df, head)
#new names
names(new_list) <- paste0(names(list_df), "_head")

new_list
# $iris_head
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          5.1         3.5          1.4         0.2  setosa
# 2          4.9         3.0          1.4         0.2  setosa
# 3          4.7         3.2          1.3         0.2  setosa
# 4          4.6         3.1          1.5         0.2  setosa
# 5          5.0         3.6          1.4         0.2  setosa
# 6          5.4         3.9          1.7         0.4  setosa
# 
# $cars_head
# speed dist
# 1     4    2
# 2     4   10
# 3     7    4
# 4     7   22
# 5     8   16
# 6     9   10