对于两个或多个数据帧,df1, df2, df3, df4, ...
应该使用哪种数据结构,以便可以遍历数据帧并对每个数据帧执行某些操作。
for(df in 'what') {
print(colnames(df))
}
what
部分-使用哪种数据结构,以便可以在for
循环中访问每个数据帧以执行某些操作。
答案 0 :(得分:3)
通常,最好将数据包含在列表中,而不要在全局环境中具有单独的数据框。将数据保存在列表中更易于管理。
list_df <- mget(ls(pattern = 'df\\d+'))
,并使用lapply
对每个元素执行操作。
lapply(list_df, function(x) names(x))
答案 1 :(得分:1)
library(tidyverse)
for(df in list(band_instruments, iris, mtcars)){
print(colnames(df))
}
# [1] "name" "plays"
# [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
# [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
答案 2 :(得分:1)
最好不要在全局环境中创建单独的对象。而是可以将文件直接读取到list
files <- list.files(pattern = "\\.csv")
lst1 <- lapply(files, read.csv)
或与tidyverse
library(purrr)
library(readr)
lst1 <- map(files, read_csv)
,然后使用list
从lapply
获取列名
lapply(lst1, names)
此外,如果文件很大,则vroom还提供了一个选项,可以将所有文件压缩为单个数据。frame
library(vroom)
files <- fs::dir_ls(glob = "csv")
out <- vroom::vroom(files)