R中的Python列表理解?

hhh*_*hhh 1 python r list-comprehension

我想在R中这样:

fsC=[read.table(x) for x in Sys.glob('./Trial7/*.csv')]
Run Code Online (Sandbox Code Playgroud)

即尝试将每个文件的内容读取到单独的向量,其中向量属于数据结构.

蟒蛇

[file(x, 'r').read() for x in glob.glob('./Trial7/*.csv')]
Run Code Online (Sandbox Code Playgroud)

或者更好

[file(x, 'r') for x in glob.glob('./Trial7/*.csv')]
Run Code Online (Sandbox Code Playgroud)

但我认为你明白了......

Ric*_*ton 7

你有两个问题.首先,"给定一个文件名向量,你如何将这些文件读入R?".

这是您的文件名列表

trial7_files <- Sys.glob("Trial7/*.csv") 
#if you prefer to specify the names using regular expressions, try 
trial7_files <- dir("Trial7", "\\.csv$")
Run Code Online (Sandbox Code Playgroud)

如前所述,lapply是阅读文件的最佳方式.

fsC <- lapply(trial7_files, read.csv)
Run Code Online (Sandbox Code Playgroud)

这会为您提供数据框列表,并引出您的下一个问题."如何将具有相同列的数据帧列表合并到一个数据帧中?"

执行此操作的标准方法是使用do.callrbind.首先,记下每个数据集中有多少行是很有用的.

n_records <- sapply(fsC, nrow)
fsC <- do.call(rbind, fsC)
Run Code Online (Sandbox Code Playgroud)

这是你的问题解决了,虽然你可能想要一个列告诉你每行来自哪个文件.

fsC$source <- rep(trial7_files, n_records)
Run Code Online (Sandbox Code Playgroud)


zch*_*zch 5

使用sapply来"映射"向量:

sapply(Sys.glob('./Trial7/*.csv'), read.table) -> fsc
Run Code Online (Sandbox Code Playgroud)