我正在将一堆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”代替了实际值。
我希望它不会将此信息打印到控制台中。我尝试将lapply
和lapply
中的函数包装在invisible()
as recommended here中。两种方法均无效。有什么想法吗?
答案 0 :(得分:1)
在capture.output(load_shapefiles(x))
无法使用的地方使用invisible(load_shapefiles(x))
。
感谢瑞·巴拉达斯(答案)
编辑:st_read
有一个名为quiet
的参数,该参数确定是否将打印有关正在读取的文件的信息。将quiet
设置为TRUE,就无需将函数包装在capture.output
或invisible
中。