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")