Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-studio服务器在执行简单的if-else代码后返回错误_R_If Statement_Error Handling_Try Catch_Rstudio Server - Fatal编程技术网

R-studio服务器在执行简单的if-else代码后返回错误

R-studio服务器在执行简单的if-else代码后返回错误,r,if-statement,error-handling,try-catch,rstudio-server,R,If Statement,Error Handling,Try Catch,Rstudio Server,我目前正面临这个问题。分析一个大数据集(大约300万个观测值),我需要将一个变量从一种格式转换为另一种格式。具体地说,我有几家公司的成立日期,但有两种格式:YYYY或MM-DD-YYYY,或者最后4个字符始终与年份相关的其他可能性 我需要的只是这一年,所以我开发了以下代码: library(stringi) for (i in 1:length(amadeus$Dateofincorporation) { if(nchar(amadeus$Dateofincorporation[i])

我目前正面临这个问题。分析一个大数据集(大约300万个观测值),我需要将一个变量从一种格式转换为另一种格式。具体地说,我有几家公司的成立日期,但有两种格式:
YYYY
MM-DD-YYYY
,或者最后4个字符始终与年份相关的其他可能性

我需要的只是这一年,所以我开发了以下代码:

library(stringi)

for (i in 1:length(amadeus$Dateofincorporation) {
    if(nchar(amadeus$Dateofincorporation[i]) == 4 & 
       !is.na(amadeus$Dateofincorporation[i])) {
        amadeus$Dateofincorporation[i] <- amadeus$Dateofincorporation[i]
    } 
    else if (nchar(amadeus$Dateofincorporation[i]) != 4 & 
             !is.na(amadeus$Dateofincorporation[i])) {
        amadeus$Dateofincorporation[i] <- stri_sub(amadeus$Dateofincorporation[i],-4,-1)
    } 
    else { 
        amadeus$Dateofincorporation[i] <- amadeus$Dateofincorporation[i] 
    }
}
库(stringi)
适用于(1中的i:长度(amadeus$DateOfInorporation){
如果(nchar(amadeus$DateOfInporation[i])==4,
!is.na(amadeus$Dateofincorporation[i])){

amadeus$DateOfInorporation[i]它可能看起来很奇怪,但我重新运行了代码,现在它可以工作了。我的意思是,仍然给出上述警告,但输出是所需的。
我认为理解这些警告的由来并不重要,所以谢谢大家!

我认为问题在于使用plyr软件包。我很少使用非base R软件包,一开始使用plyr,我就开始收到这些看似无辜的声明的奇怪警告消息,比如创建一个新的向量。我从s中删除了plyr脚本并重新运行我的代码,所有警告消息都消失了!

这可能与您发布的代码无关。每次我从以前的会话中的“绘图”选项卡中保留绘图时,都会发生这种情况,即使在我删除了绘图后也是如此;警告消息会在我输入第一行代码后出现

require(package)

1: In doTryCatch(return(expr), name, parentenv, handler) :
  display list redraw incomplete
2: In doTryCatch(return(expr), name, parentenv, handler) :
  invalid graphics state

第二条消息的重复次数与绘图的次数相同 在“绘图”选项卡的左侧

我通常通过输入来消除这些警告

dev.off()


请参见

在寻求帮助时,您应该包括一个简单的示例输入和所需的输出,可用于测试和验证可能的解决方案。如果您的代码仅获得最后四位数字,这不是等效的吗?
sub(“*(\\d{4}$)”,“\\1”,amadeus$DateOfInporation)
@MrFlick抱歉并感谢您提醒我。C.Braun是的,事实上,您的代码是几种可能的等效方法中的一种。警告仍然困扰着我们所有人,如果您能找到它发出的原因,那将是一件好事。我在数据表1.11.4中,警告仍然不稳定地出现,即不可重复的方式。