循环中的R个动态数据帧名称

Tuo*_*yen 2 r dynamic dataframe

我有一些像

df1
df2
df3
...
dfn

那么如何使用循环使用我的数据框

例:

循环(i在1:n中)
{
摘要(paste0(“ df”,i)) #=====>它不起作用!

}

akr*_*run 6

我们可以使用mget返回a中的字符串对象的值list,然后list使用lapplyget 循环遍历summary

lapply(mget(paste0("df", seq_len(n))), summary)
Run Code Online (Sandbox Code Playgroud)

如果使用for循环,请确保将结果存储在对象中,最好是a list,用于get返回对象的值,获取summary并将其作为list元素存储在“ out”对象中

out <- vector('list', n)
for(i in seq_len(n)) {
   out[[i]] <- summary(get(paste0("df", i)))
 }
Run Code Online (Sandbox Code Playgroud)

注意:最好将所有内容都data.frame放在一个中list。但是,如果我们想使用for循环使用来更新全局环境中的原始对象assign

for(i in seq_len(n)) {
  assign(paste0("df", i), get(paste0("df", i))[-(1:3)])
 }   
Run Code Online (Sandbox Code Playgroud)

或者可以在使用list2env后完成lapply

list2env(lapply(mget(paste0("df", seq_len(n))), function(x) x[-(1:3)]), .GlobalEnv)
Run Code Online (Sandbox Code Playgroud)

数据

df1 <- data.frame(col1 = 1:3, col2 = 4:6, col3 = 7:9, col4 = 10:12)
df2 <- data.frame(col1 = 1:15, col2 = 16:30, col3 = 31:45, col4 = 46:60)
n <- 2
Run Code Online (Sandbox Code Playgroud)