如何停止lapply打印到控制台?

时间:2019-03-06 19:17:13

标签: r console apply

我正在将一堆shapefile读入R,并使用lapply在多个文件中运行它。现在,该代码可以正常工作,但是它将大量信息输出到控制台中。我试图摆脱这种情况,以便控制台更干净。

load_shapefiles <- function(file_name){
#grabs the last two digits of the year for the current file
partial_year <- str_sub(file_name, start = 9, end = 10)
#read in files
st_read(dsn = sprintf("data/%s", file_name), layer = sprintf("Census_sum_%s", partial_year))
}

#apply the loading function across a list of file names
list_data <- lapply(list_filenames, function(x) load_shapefiles(x))

代码运行得非常快,但是对于每个文件,打印出的信息如下:

Reading layer 'Census_sum_17' from data source xxxx using driver ESRI Shapefile Simple feature collection with xxxxx features and xxxxxx fields geometry type: POLYGON dimension: XY bbox: xmin: xxxx ymin: xxxxxx xmax: xxxxxx ymax: xxxxxxx epsg (SRID): NA proj4string: xxxxx

注意:我用“ xxxx”代替了实际值。

我希望它不会将此信息打印到控制台中。我尝试将lapplylapply中的函数包装在invisible() as recommended here中。两种方法均无效。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

capture.output(load_shapefiles(x))无法使用的地方使用invisible(load_shapefiles(x))

感谢瑞·巴拉达斯(答案)

编辑:st_read有一个名为quiet的参数,该参数确定是否将打印有关正在读取的文件的信息。将quiet设置为TRUE,就无需将函数包装在capture.outputinvisible中。