R for() 循环:将“ls”标准输出管道传输到 read.csv() 并创建多个对象

问题描述

我想实现一个优雅的解决方案:通过使用 system("ls")read.csv() 标准输出代理到 for() 创建对象。

工作目录:

[Data]    #contain 10 .csv files e.g: './Data/dataset01.csv'
                                              ^-------^(8~16th characters)
my_Script.Rmd   #RMarkdown script used in the example

R 代码

for (i in system("ls ./Data/*.csv"))
     
     { read.csv(file=i) -> strsplit(i,8,16) }

我打算在这里实现的目标:

  1. 对于来自 ls 的每个文件路径标准输出
  2. 读取 .csv 文件
  3. 为每个读取的数据集创建一个数据框。

谢谢!

解决方法

首先获取文件名。 您可以按照对 File "<string>",line 26,in <module> TypeError: unsupported operand type(s) for -: 'list' and 'str' [Program finished] 的建议进行操作,但请确保包含 system 以将命令的输出捕获为字符串。

intern=T

另一种选择是使用函数 fl <-system("ls ./MATLAB/*.m",intern = T)

list.files

然后使用 fl <- list.files(path = "Data",pattern = "\\.csv$",full.names = T) 为名称赋值。使用 assign(删除路径)和 basename(删除文件扩展名)的组合。

tools::file_path_sans_ext

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...