在for-loop(R)中的警告期间获取变量的值

时间:2017-01-26 19:15:50

标签: r loops warnings

我正在尝试批量转换一堆文件,如下所示:

library(foreign)

for(dtaf in dir(recursive=TRUE,pattern="\\.dta$")){
  write.csv(read.dta(dtaf),paste0(substr(dtaf,1,nchar(dtaf)-3),"csv"))
  gc()
}

但是,一旦循环完成,我会收到以下警告:

Warning messages:
1: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels,  :
  duplicated levels in factors are deprecated
2: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels,  :
  duplicated levels in factors are deprecated
3: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels,  :
  duplicated levels in factors are deprecated

我想知道是否有办法检索dtaf(当前正在编写的文件)的值,以便我可以手动检查它,看看数据是否存在任何实际问题。

1 个答案:

答案 0 :(得分:1)

tryCatch最常用于捕获错误,但它也可用于警告。

这样的东西
 tryCatch(write.csv(<your code>), warning = function(w) print(dtaf))
只要有警告,

print(dtaf)。您可以根据需要制作警告功能,也可以打印出警告,将警告和dtaf值添加到列表中供以后查看,等等。