我想在 R 中这样做:
fsC=[read.table(x) for x in Sys.glob('./Trial7/*.csv')]
即尝试将每个文件的内容读入一个单独的向量,其中向量属于一个数据结构。
python
[file(x, 'r').read() for x in glob.glob('./Trial7/*.csv')]
或者实际上更好
[file(x, 'r') for x in glob.glob('./Trial7/*.csv')]
但我认为你明白了...
最佳答案
你有两个问题。首先,“给定一个文件名向量,你如何将这些文件读入 R?”。
这是你的文件名列表
trial7_files <- Sys.glob("Trial7/*.csv")
#if you prefer to specify the names using regular expressions, try
trial7_files <- dir("Trial7", "\\.csv$")
如前所述,lapply
是读取文件的最佳方式。
fsC <- lapply(trial7_files, read.csv)
这会为您提供数据框列表,并引出您的下一个问题。 “如何将具有相同列的数据框列表组合成一个数据框?”
执行此操作的标准方法是使用 do.call
和 rbind
。首先,记下每个数据集中有多少行是很有用的。
n_records <- sapply(fsC, nrow)
fsC <- do.call(rbind, fsC)
虽然您可能需要一个列来告诉您每一行来自哪个文件,但您的问题已经解决了。
fsC$source <- rep(trial7_files, n_records)
关于R 中的 Python 列表理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8727811/