R 如何在列表中循环变量名

R 如何在列表中循环变量名,r,R,我正在处理一个列表,我想循环一个变量好几次,但我不能 例如: a=data.frame(ID=1:5,WT=1:5) b=data.frame(ID=101:105,WT=101:105) c=list(a,b) names(c)=c("P01","P02") 现在我想为每个数据帧添加一个新列 c$P01$seq=1:length(c$P01$ID) c$P02$seq=1:length(c$P02$ID) 我遇到的问题是,我的列表有29个数据帧,而不是本例中的两个。如何使此过程自动

我正在处理一个列表,我想循环一个变量好几次,但我不能

例如:

a=data.frame(ID=1:5,WT=1:5)  
b=data.frame(ID=101:105,WT=101:105)
c=list(a,b)
names(c)=c("P01","P02")
现在我想为每个数据帧添加一个新列

c$P01$seq=1:length(c$P01$ID)  
c$P02$seq=1:length(c$P02$ID)
我遇到的问题是,我的列表有29个数据帧,而不是本例中的两个。如何使此过程自动化,以便向每个数据帧添加新列

我尝试过一些没有成功的事情,比如创建循环,但它不起作用:

unique=names(c)
for (i in 1:length(unique) {
   c$unique[i]$seq=1:length(c$unique[i]$seq)  
}

我们可以使用
seq\u和
lappy

lapply(c, transform, Seq = seq_along(ID))

或者使用
tidyverse

library(tidyverse)
c %>% 
   map(~ .x %>% 
            mutate(Seq = row_number()))

您的
for
-循环不起作用的原因是,您正在将
字符
-值与
$
-运算符结合使用。您可以改为使用
[
索引列表来解决此问题

df_names <- names(dfs)
for (i in seq_along(df_names)) {
  dfs[[df_names[i]]]$seq <- seq_along(dfs[[df_names[i]]]$ID)
}
数据
注意:由于c和unique是base R中的两个函数,因此我在示例中更改了变量名


a非常感谢。我已经在这方面耽搁了很长时间。干杯谢谢你对循环的友好解释。它现在起作用了。
for (x in df_names) {
  dfs[[x]]$seq <- seq_along(dfs[[x]]$ID)
}
a <- data.frame(ID = 1:5, WT = 1:5)
b <- data.frame(ID = 101:105, WT = 101:105)
dfs <- list(a, b)
names(dfs) <- c("P01", "P02")