r - 迭代 R 中的一组数据帧

标签 r dataframe for-loop

假设我有一组数据帧:df1、df2、d3、df4。我想对每个数据帧应用某种行为。我不想重复复制代码,而是想通过某种 for 循环来完成此操作。例如,假设我想获取 df 并重新分配它,以便第一列是行名。我这样做的正常方法是:

df1_b <- df1[,-1]
rownames(df1_b) <- df1[,1]

我将如何对我拥有的所有四个数据帧执行此操作。我想我需要以某种方式将数据帧分组到一个 set 中,然后执行类似

的操作
for (i in set) {
  i+"_b" <- i[,-1]
  rownames(i_b) <- i[,1]
}

我试着用 cbind 来做到这一点:

df_set <- c(df1, df2, df3, df4)
for (i in df_set) {
  i+"_b" <- i[,-1]
  rownames(i_b) <- i[,1]
}

但这当然行不通(我很确定 R 不会像这样进行字符串连接)。

如有任何帮助,我们将不胜感激!

最佳答案

我们可以使用mget将多个对象的值获取到一个list中,然后在list中循环处理listlapply

lst1 <- lapply(mget(paste0("df", 1:4)), function(x) {
               row.names(x) <- x[,1]
                x[,-1]
    })

如果我们想改变原来的对象(不推荐)

list2env(lst1, .GlobalEnv)

或者另一种选择是 tidyverse

library(purrr)
library(tibble)
library(dplyr)
mget(ls(pattern = "^df\\d+$")) %>%
     map(~ .x %>%
               column_to_rownames(names(.)[1])) 

关于r - 迭代 R 中的一组数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59652891/

相关文章:

RAdwords 错误 ("server certificate verification failed")

函数接受回调值时的 Javascript 关闭

r - 在用户定义的函数中使用胶水进行变异

r - 总结中的 p 值与 R lm() 中的方差分析之间的差异

python - 加快 python pandas 中的 read_csv

python - 如何在 Dataframe 中保存排序顺序?

vb.net - 带for和不带if语句的VB DBNull解决方案

java - 这个例子使用 Java 8 中的流 api 是否与 for 循环相同?

R 拆分因子到具有原始长度的 m 列

python - 将 Graphlab SFrame 日期列拆分为三列(年月日)