Giter Site home page Giter Site logo

wmay / dwnominate Goto Github PK

View Code? Open in Web Editor NEW
19.0 5.0 4.0 1.21 MB

An R interface to the DW-NOMINATE roll call scaling program

Home Page: https://wmay.github.io/dwnominate

License: Other

R 30.20% Fortran 56.95% TeX 12.28% C 0.58%
political-science ideal-points r r-package fortran

dwnominate's People

Contributors

wmay avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

dwnominate's Issues

Can't reproduce official DW-NOMINATE scores

Given the same starting estimates and votes, dwnominate produces the same output as the DW-NOMINATE fortran code provided by Keith Poole here. However, the official DW-NOMINATE scores still cannot be fully reproduced because we don't know how the starting estimates are calculated. This means dwnominate can't extend the official DW-NOMINATE scores to cover recent sessions of congress, which would be extremely useful.

If the people responsible for the official DW-NOMINATE scores are reluctant to explain the starting estimates, maybe the process can be reverse-engineered.

segfault in dwnominate on Mac OS

Hi Will,

I recently tried to compute some scores with your dwnominate R-function and got the following error, running the function via terminal on macos 10.14.6 and on R 3.6.1:

*** caught segfault ***
address 0x119c64000, cause 'memory not mapped'

Traceback:
1: dwnominate(rc_list = rclist, id = "ID", start = startswnom, dims = 1, polarity = "3078", minvotes = 25)

I don’t know whether you remember, but I’ve had a similar problem several years ago, when my gfortran version didn’t compile the fortran code right and R always aborted when trying to run the function. You then adviced me to use the gfortran version that is still linked in the readme file. I did this same procedure also this time around but something seems to have changed as R again aborts everytime I try to run the function. Also, when installing the function, I kind of get the suspicion that R tries to (wrongly?) use clang to compile the code instead of gfortran. I’ll attach everything that R echoes when installing the code so you can check on this, too.

Do you have any idea why this might be the case?

Thanks a lot and best wishes,
David


Echo when installing the package:
R echo during installation:

Downloading GitHub repo wmay/dwnominate@master
✔  checking for file ‘/private/var/folders/pb/qdqj38351wzbp4xmch82v9j40000gn/T/RtmpLgWX56/remotes13caa2d4d53ce/wmay-dwnominate-cb51bae/DESCRIPTION’ (679ms)
─  preparing ‘dwnominate’: (725ms)
✔  checking DESCRIPTION meta-information ...
─  cleaning src
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
─  looking to see if a ‘data/datalist’ file should be added
─  building ‘dwnominate_1.1.tar.gz’
   
* installing *source* package ‘dwnominate’ ...
** using staged installation
** libs
gfortran -std=legacy -fPIC  -Wall -g -O2  -c dwnom.f -o dwnom.o
gfortran: warning: couldn’t understand kern.osversion ‘18.7.0
dwnom.f:9512.6:

      INTEGER FUNCTION IACHAR (CH)                                      
      1
Warning: 'iachar' declared at (1) is also the name of an intrinsic.  It can only be called via an explicit interface or if declared EXTERNAL.
dwnom.f:114.5:

 1001 format(' ELAPSED TIME OF JOB  ',4(i2.2,'.'))                      
     1
Warning: Label 1001 at (1) defined but not used
dwnom.f:113.5:

 1000 format(22x,4(i2.2,'.'))                                           
     1
Warning: Label 1000 at (1) defined but not used
dwnom.f:232.4:

 475  call intpr('TOTAL ROLL CALLS', -1, I, 1)                          
    1
Warning: Label 475 at (1) defined but not used
dwnom.f:264.4:

 450  call intpr('TOTAL LEGISLATORS', -1, I, 1)                         
    1
Warning: Label 450 at (1) defined but not used
dwnom.f:193.4:

 425  call intpr('NUMBER OF CONGRESSES', -1, I, 1)                      
    1
Warning: Label 425 at (1) defined but not used
dwnom.f:111.4:

 320  FORMAT(' Estimating ', A, '...')                                  
    1
Warning: Label 320 at (1) defined but not used
dwnom.f:110.5:

  319 FORMAT(' MISMATCH ON PARTY CODES',3I7)                            
     1
Warning: Label 319 at (1) defined but not used
dwnom.f:109.5:

  318 FORMAT(' MISMATCH ON CONGRESSIONAL DISTRICT CODES',3I7)           
     1
Warning: Label 318 at (1) defined but not used
dwnom.f:108.5:

  317 FORMAT(' MISMATCH ON STATE CODES',3I7)                            
     1
Warning: Label 317 at (1) defined but not used
dwnom.f:107.5:

  316 FORMAT(' FATAL MISMATCH ON LEGISLATORS',3I7)                      
     1
Warning: Label 316 at (1) defined but not used
dwnom.f:106.5:

  315 FORMAT(' NUMBER RECORDS WRITTEN',4I8)                             
     1
Warning: Label 315 at (1) defined but not used
dwnom.f:105.5:

  314 FORMAT(' NUMBER READ ROLL CALL FILE',3I6)                         
     1
Warning: Label 314 at (1) defined but not used
dwnom.f:103.5:

  313 FORMAT(' NUMBER RCs & CLASSIFICATION',6I9/                        
     1
Warning: Label 313 at (1) defined but not used
dwnom.f:102.5:

  312 FORMAT(I4,I5,5I4,4F7.3)                                           
     1
Warning: Label 312 at (1) defined but not used
dwnom.f:101.5:

  308 FORMAT(' UNIQUE LEGISLATORS',4I6,I9/19X,4F15.3)                   
     1
Warning: Label 308 at (1) defined but not used
dwnom.f:97.5:

  304 FORMAT(' FATAL MISMATCH',I4,4I6)                                  
     1
Warning: Label 304 at (1) defined but not used
dwnom.f:96.5:

  303 FORMAT(4I4,6F7.3)                                                 
     1
Warning: Label 303 at (1) defined but not used
dwnom.f:95.5:

  302 FORMAT(' NUMBER OF CONGRESSES  ',I7)                              
     1
Warning: Label 302 at (1) defined but not used
dwnom.f:94.5:

  301 FORMAT(' TOTAL LEGISLATORS     ',3I7)                             
     1
Warning: Label 301 at (1) defined but not used
dwnom.f:93.5:

  300 FORMAT(' TOTAL ROLL CALLS      ',3I7)                             
     1
Warning: Label 300 at (1) defined but not used
dwnom.f:92.5:

  253 FORMAT(I4,I5,7I4,5F7.3)                                           
     1
Warning: Label 253 at (1) defined but not used
dwnom.f:91.5:

  252 FORMAT(17X,5I4,5F7.3)                                             
     1
Warning: Label 252 at (1) defined but not used
dwnom.f:90.5:

  251 FORMAT(I4,I5,3I4,5F7.3/17X,I4,5F7.3)                              
     1
Warning: Label 251 at (1) defined but not used
dwnom.f:89.5:

  250 FORMAT(I4,I5,15I4)                                                
     1
Warning: Label 250 at (1) defined but not used
dwnom.f:88.5:

  240 FORMAT(I4,I5,1X,600I1)                                            
     1
Warning: Label 240 at (1) defined but not used
dwnom.f:87.5:

  214 FORMAT(10X,10F10.6)                                               
     1
Warning: Label 214 at (1) defined but not used
dwnom.f:86.5:

  213 FORMAT(54X,40F7.3)                                                
     1
Warning: Label 213 at (1) defined but not used
dwnom.f:85.5:

  212 FORMAT(I4,I6,I3,I2,I4,F7.3,2F12.5,4I5,2F7.3)                      
     1
Warning: Label 212 at (1) defined but not used
dwnom.f:84.5:

  211 FORMAT(I4,I6,I3,I2,I4,6F7.3,2F12.5,4I5,2F7.3)                     
     1
Warning: Label 211 at (1) defined but not used
dwnom.f:83.5:

  210 FORMAT(I3,I8,I6,I3,I2,1X,7A1,1X,I4,1X,11A1,40F7.3)                
     1
Warning: Label 210 at (1) defined but not used
dwnom.f:82.5:

  203 FORMAT(I4,I5,4I4,2I2,30F7.3)                                      
     1
Warning: Label 203 at (1) defined but not used
dwnom.f:81.5:

  202 FORMAT(I9,4F15.3)                                                 
     1
Warning: Label 202 at (1) defined but not used
dwnom.f:80.5:

  201 FORMAT(I4,I6,I3,I2,I4,2F7.3,I5)                                   
     1
Warning: Label 201 at (1) defined but not used
dwnom.f:79.5:

  200 FORMAT(I4,I6,I3,I2,I4,3600I1)                                     
     1
Warning: Label 200 at (1) defined but not used
dwnom.f:78.5:

  190 FORMAT(I4,I6,I3,I4,1X,11A1,2F7.3)                                 
     1
Warning: Label 190 at (1) defined but not used
dwnom.f:77.5:

  180 FORMAT(I3,1X,2I4)                                                 
     1
Warning: Label 180 at (1) defined but not used
dwnom.f:76.5:

  175 FORMAT(I3,I5,4F7.3)                                               
     1
Warning: Label 175 at (1) defined but not used
dwnom.f:75.5:

  150 FORMAT(6X,I5,41X,2F7.3)                                           
     1
Warning: Label 150 at (1) defined but not used
dwnom.f:74.5:

  104 FORMAT(15F8.4)                                                    
     1
Warning: Label 104 at (1) defined but not used
dwnom.f:73.5:

  103 FORMAT(10I5)                                                      
     1
Warning: Label 103 at (1) defined but not used
dwnom.f:72.5:

  102 FORMAT(A64)                                                       
     1
Warning: Label 102 at (1) defined but not used
dwnom.f:70.5:

  101 format(I3,1x,i5,1x,i5,1x,i2,1x,i2,1x,7a1,1x,i4,1x,i1,1x,i1,1x,    
     1
Warning: Label 101 at (1) defined but not used
dwnom.f:68.5:

  100 FORMAT(2X,I3,2I2,I4,I5,2I1,11A1,3600I1)                           
     1
Warning: Label 100 at (1) defined but not used
dwnom.f:130.15:

      WEIGHT = WEIGHTSIN                                                
               1
Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1)
dwnom.f:198.12:

      DYN = DYNIN                                                       
            1
Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1)
dwnom.f:199.13:

      ZMID = ZMIDIN                                                     
             1
Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1)
dwnom.f:239.14:

      XDATA = XDATAIN                                                   
              1
Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1)
dwnom.f:832.5:

 1111 FORMAT(2F15.3)                                                    
     1
Warning: Label 1111 at (1) defined but not used
dwnom.f:1071.5:

 1007 FORMAT(' LNL',2I10,F15.3,10F8.4)                                  
     1
Warning: Label 1007 at (1) defined but not used
dwnom.f:1070.5:

 1006 FORMAT(I10,11F20.3)                                               
     1
Warning: Label 1006 at (1) defined but not used
dwnom.f:1069.5:

 1005 FORMAT(I4,2I5,I8,3F15.3)                                          
     1
Warning: Label 1005 at (1) defined but not used
dwnom.f:1068.5:

 1004 FORMAT(5I8,6F15.3)                                                
     1
Warning: Label 1004 at (1) defined but not used
dwnom.f:1067.5:

 1003 FORMAT(4I4,3F15.3)                                                
     1
Warning: Label 1003 at (1) defined but not used
dwnom.f:1066.5:

 1002 FORMAT(' LOG-L',2I10,10F8.5)                                      
     1
Warning: Label 1002 at (1) defined but not used
dwnom.f:1065.5:

 1001 FORMAT(I4,F5.2,F10.7)                                             
     1
Warning: Label 1001 at (1) defined but not used
dwnom.f:736.5:

 1111 FORMAT(2F15.3)                                                    
     1
Warning: Label 1111 at (1) defined but not used
dwnom.f:2948.11:

      IJ = I+(J-I)*R                                                    
           1
Warning: Possible change of value in conversion from REAL(4) to INTEGER(4) at (1)
dwnom.f:966.5:

 1001 FORMAT(I4,F7.3,I2,4I4,F7.3)                                       
     1
Warning: Label 1001 at (1) defined but not used
dwnom.f:3768.5:

 1094 FORMAT(' RC  CLASSIFICATION ERROR  ',2I3,2I8,2F10.5)              
     1
Warning: Label 1094 at (1) defined but not used
dwnom.f:3767.5:

 1093 FORMAT(' CLASSIFICATION CHECK  ',I3,I8)                           
     1
Warning: Label 1093 at (1) defined but not used
dwnom.f:3766.5:

  100 FORMAT(5I5)                                                       
     1
Warning: Label 100 at (1) defined but not used
dwnom.f:3940.5:

 3909 FORMAT(I5,I3,6I4,2I8,5I5)                                         
     1
Warning: Label 3909 at (1) defined but not used
dwnom.f:4143.5:

 3908 FORMAT(I5,I3,10F7.3)                                              
     1
Warning: Label 3908 at (1) defined but not used
dwnom.f:3939.5:

 1212 FORMAT(I3,I5,7I4)                                                 
     1
Warning: Label 1212 at (1) defined but not used
dwnom.f:3938.5:

 1103 FORMAT(' MIDPOINT DECOMPOSITION',5I6)                             
     1
Warning: Label 1103 at (1) defined but not used
dwnom.f:3937.5:

 1099 FORMAT(I3,I5,I3,2I4)                                              
     1
Warning: Label 1099 at (1) defined but not used
dwnom.f:3936.5:

 1091 FORMAT(' INVERSE MATRIX ERROR',I4,I5,I8,2F10.4)                   
     1
Warning: Label 1091 at (1) defined but not used
dwnom.f:3935.5:

  210 FORMAT(I5,10F12.3)                                                
     1
Warning: Label 210 at (1) defined but not used
dwnom.f:4622.21:

      INTRINSIC  MAX0                                                   
                     1
Warning: Type specified for intrinsic function 'max0' at (1) is ignored
dwnom.f:8335.21:

      INTRINSIC  IABS                                                   
                     1
Warning: Type specified for intrinsic function 'iabs' at (1) is ignored
dwnom.f:8368.5:

   20 IF (K .EQ. 0) THEN                                                
     1
Warning: Label 20 at (1) defined but not used
dwnom.f:7594.21:

      INTRINSIC  MIN0                                                   
                     1
Warning: Type specified for intrinsic function 'min0' at (1) is ignored
dwnom.f:9367.21:

      INTRINSIC  IABS                                                   
                     1
Warning: Type specified for intrinsic function 'iabs' at (1) is ignored
dwnom.f:5240.20:

      INTRINSIC  LEN, MIN0                                              
                    1
Warning: Type specified for intrinsic function 'len' at (1) is ignored
dwnom.f:5240.26:

      INTRINSIC  LEN, MIN0                                              
                          1
Warning: Type specified for intrinsic function 'min0' at (1) is ignored
dwnom.f:7210.21:

      INTRINSIC  MIN0                                                   
                     1
Warning: Type specified for intrinsic function 'min0' at (1) is ignored
dwnom.f:7378.5:

 9000 MSGLEN = 0                                                        
     1
Warning: Label 9000 at (1) defined but not used
dwnom.f:9454.21:

      INTRINSIC  IABS                                                   
                     1
Warning: Type specified for intrinsic function 'iabs' at (1) is ignored
dwnom.f:9568.22:

      INTRINSIC  ISIGN, MIN0                                            
                      1
Warning: Type specified for intrinsic function 'isign' at (1) is ignored
dwnom.f:9568.28:

      INTRINSIC  ISIGN, MIN0                                            
                            1
Warning: Type specified for intrinsic function 'min0' at (1) is ignored
dwnom.f:7458.21:

      INTRINSIC  DMOD                                                   
                     1
Warning: Type specified for intrinsic function 'dmod' at (1) is ignored
dwnom.f:6952.22:

      INTRINSIC  INDEX                                                  
                      1
Warning: Type specified for intrinsic function 'index' at (1) is ignored
dwnom.f:8134.21:

      INTRINSIC  MAX0                                                   
                     1
Warning: Type specified for intrinsic function 'max0' at (1) is ignored
dwnom.f:5785.21:

      INTRINSIC  IABS, MAX0, MOD                                        
                     1
Warning: Type specified for intrinsic function 'iabs' at (1) is ignored
dwnom.f:5785.27:

      INTRINSIC  IABS, MAX0, MOD                                        
                           1
Warning: Type specified for intrinsic function 'max0' at (1) is ignored
dwnom.f:5785.32:

      INTRINSIC  IABS, MAX0, MOD                                        
                                1
Warning: Type specified for intrinsic function 'mod' at (1) is ignored
dwnom.f:8734.21:

      INTRINSIC  IABS, LEN, MIN0                                        
                     1
Warning: Type specified for intrinsic function 'iabs' at (1) is ignored
dwnom.f:8734.26:

      INTRINSIC  IABS, LEN, MIN0                                        
                          1
Warning: Type specified for intrinsic function 'len' at (1) is ignored
dwnom.f:8734.32:

      INTRINSIC  IABS, LEN, MIN0                                        
                                1
Warning: Type specified for intrinsic function 'min0' at (1) is ignored
dwnom.f:8035.21:

      INTRINSIC  MAX0                                                   
                     1
Warning: Type specified for intrinsic function 'max0' at (1) is ignored
dwnom.f:8607.21:

      INTRINSIC  IABS                                                   
                     1
Warning: Type specified for intrinsic function 'iabs' at (1) is ignored
dwnom.f:4694.20:

      INTRINSIC  MOD                                                    
                    1
Warning: Type specified for intrinsic function 'mod' at (1) is ignored
dwnom.f:6157.20:

      INTRINSIC  MOD                                                    
                    1
Warning: Type specified for intrinsic function 'mod' at (1) is ignored
dwnom.f:4805.20:

      INTRINSIC  ABS, AMAX1, MAX0, MIN0, MOD, SIGN, SQRT                
                    1
Warning: Type specified for intrinsic function 'abs' at (1) is ignored
dwnom.f:4805.27:

      INTRINSIC  ABS, AMAX1, MAX0, MIN0, MOD, SIGN, SQRT                
                           1
Warning: Type specified for intrinsic function 'amax1' at (1) is ignored
dwnom.f:4805.33:

      INTRINSIC  ABS, AMAX1, MAX0, MIN0, MOD, SIGN, SQRT                
                                 1
Warning: Type specified for intrinsic function 'max0' at (1) is ignored
dwnom.f:4805.39:

      INTRINSIC  ABS, AMAX1, MAX0, MIN0, MOD, SIGN, SQRT                
                                       1
Warning: Type specified for intrinsic function 'min0' at (1) is ignored
dwnom.f:4805.44:

      INTRINSIC  ABS, AMAX1, MAX0, MIN0, MOD, SIGN, SQRT                
                                            1
Warning: Type specified for intrinsic function 'mod' at (1) is ignored
dwnom.f:4805.50:

      INTRINSIC  ABS, AMAX1, MAX0, MIN0, MOD, SIGN, SQRT                
                                                  1
Warning: Type specified for intrinsic function 'sign' at (1) is ignored
dwnom.f:4805.56:

      INTRINSIC  ABS, AMAX1, MAX0, MIN0, MOD, SIGN, SQRT                
                                                        1
Warning: Type specified for intrinsic function 'sqrt' at (1) is ignored
dwnom.f:6083.20:

      INTRINSIC  ABS                                                    
                    1
Warning: Type specified for intrinsic function 'abs' at (1) is ignored
dwnom.f:6079.20:

      INTRINSIC  MOD                                                    
                    1
Warning: Type specified for intrinsic function 'mod' at (1) is ignored
dwnom.f:6422.20:

      INTRINSIC  ABS, SQRT                                              
                    1
Warning: Type specified for intrinsic function 'abs' at (1) is ignored
dwnom.f:6422.26:

      INTRINSIC  ABS, SQRT                                              
                          1
Warning: Type specified for intrinsic function 'sqrt' at (1) is ignored
dwnom.f:6459.5:

   80 IF (ABS(SX(I)) .LE. XMAX) GO TO 90                                
     1
Warning: Label 80 at (1) defined but not used
dwnom.f:6455.5:

   70 IF (ABS(SX(I)) .GT. CUTLO) GO TO 100                              
     1
Warning: Label 70 at (1) defined but not used
dwnom.f:6442.5:

   40 IF (SX(I) .EQ. ZERO) GO TO 130                                    
     1
Warning: Label 40 at (1) defined but not used
dwnom.f:6258.21:

      INTRINSIC  IABS                                                   
                     1
Warning: Type specified for intrinsic function 'iabs' at (1) is ignored
dwnom.f:6781.20:

      INTRINSIC  MOD                                                    
                    1
Warning: Type specified for intrinsic function 'mod' at (1) is ignored
dwnom.f:8806.20:

      INTRINSIC  MOD                                                    
                    1
Warning: Type specified for intrinsic function 'mod' at (1) is ignored
dwnom.f:8503.20:

      INTRINSIC  MOD                                                    
                    1
Warning: Type specified for intrinsic function 'mod' at (1) is ignored
dwnom.f:6626.20:

      INTRINSIC  ABS, SQRT                                              
                    1
Warning: Type specified for intrinsic function 'abs' at (1) is ignored
dwnom.f:6626.26:

      INTRINSIC  ABS, SQRT                                              
                          1
Warning: Type specified for intrinsic function 'sqrt' at (1) is ignored
dwnom.f:6861.20:

      INTRINSIC  MOD                                                    
                    1
Warning: Type specified for intrinsic function 'mod' at (1) is ignored
dwnom.f:2443.5:

 1002 FORMAT(' R-C ',I3,3I5,F7.3,F13.5,2F10.4,2F7.3)                    
     1
Warning: Label 1002 at (1) defined but not used
dwnom.f:2442.5:

 1001 FORMAT(I4,F5.2,F10.7)                                             
     1
Warning: Label 1001 at (1) defined but not used
dwnom.f:2441.5:

  100 FORMAT(8F7.3)                                                     
     1
Warning: Label 100 at (1) defined but not used
dwnom.f:2577.5:

 1004 FORMAT(I4,I5,F12.5,12X,20F7.3)                                    
     1
Warning: Label 1004 at (1) defined but not used
dwnom.f:2576.5:

 1003 FORMAT(' FATAL ERROR ROLL CALL PHASE',2I5)                        
     1
Warning: Label 1003 at (1) defined but not used
dwnom.f:2575.5:

 1002 FORMAT(I4,I5,2F12.5,20F7.3)                                       
     1
Warning: Label 1002 at (1) defined but not used
dwnom.f:2574.5:

 1001 FORMAT(' RCS',4I5,F7.3,5I4,20F7.3)                                
     1
Warning: Label 1001 at (1) defined but not used
dwnom.f:2573.5:

  206 FORMAT(I5,4I4,I2,F12.5,20F10.4)                                   
     1
Warning: Label 206 at (1) defined but not used
dwnom.f:2572.5:

  205 FORMAT(I6,2I5,5X,F12.5,20F10.4)                                   
     1
Warning: Label 205 at (1) defined but not used
dwnom.f:2571.5:

  203 FORMAT(I5,2I4,8X,I2,F12.5,20F10.4)                                
     1
Warning: Label 203 at (1) defined but not used
dwnom.f:1536.5:

 1002 FORMAT(10X,2F10.5,55F7.3)                                         
     1
Warning: Label 1002 at (1) defined but not used
dwnom.f:1535.5:

 1001 FORMAT(' LEG',I6,2I4,2F7.3,2F13.5)                                
     1
Warning: Label 1001 at (1) defined but not used
dwnom.f:1534.5:

 1000 FORMAT(3I6,I3,1X,11A1,155F7.3)                                    
     1
Warning: Label 1000 at (1) defined but not used
dwnom.f:1533.5:

  307 FORMAT(' NEGATIVE SQUARE ROOT FARTKNOCKER!!')                     
     1
Warning: Label 307 at (1) defined but not used
dwnom.f:1532.5:

  206 FORMAT(I6,I5,4F8.4,4F12.5)                                        
     1
Warning: Label 206 at (1) defined but not used
dwnom.f:1531.5:

  205 FORMAT(I6,I3,I5,I4,I3,F12.5,30F10.4)                              
     1
Warning: Label 205 at (1) defined but not used
dwnom.f:1530.5:

  203 FORMAT(I6,I5,F12.5,20F10.4)                                       
     1
Warning: Label 203 at (1) defined but not used
dwnom.f:1529.5:

  201 FORMAT(I6,2I4,150F10.4)                                           
     1
Warning: Label 201 at (1) defined but not used
dwnom.f:1528.5:

  103 FORMAT(12X,30F10.4)                                               
     1
Warning: Label 103 at (1) defined but not used
dwnom.f:1527.5:

  102 FORMAT(2I6,30F10.4)                                               
     1
Warning: Label 102 at (1) defined but not used
dwnom.f:1526.5:

  101 FORMAT(' PERFORMANCE INDEX EIGENVALUE/VECTOR ROUTINE=',3I6)       
     1
Warning: Label 101 at (1) defined but not used
dwnom.f:2372.5:

  102 FORMAT(2I5,30F10.4)                                               
     1
Warning: Label 102 at (1) defined but not used
dwnom.f:2371.5:

  101 FORMAT(' PERFORMANCE INDEX EIGENVALUE/VECTOR ROUTINE=',3I5)       
     1
Warning: Label 101 at (1) defined but not used
dwnom.f:1253.5:

 1002 FORMAT(' LEG ',I6,2I6,5F7.3,2F13.5)                               
     1
Warning: Label 1002 at (1) defined but not used
dwnom.f:1252.5:

 1001 FORMAT(I4,F5.2,F10.7)                                             
     1
Warning: Label 1001 at (1) defined but not used
dwnom.f:1251.5:

  200 FORMAT(I6,2I5,2F13.5)                                             
     1
Warning: Label 200 at (1) defined but not used
dwnom.f:1250.5:

  100 FORMAT(8F7.3)                                                     
     1
Warning: Label 100 at (1) defined but not used
dwnom.f:1055.20:

      COMMON /XXCOM/ ZMID(99001,2),XDATA(54001,9),DYN(99001,2),         
                    1
Warning: Padding of 1 bytes required before 'numcong' in COMMON 'xxcom' at (1); reorder elements or use -fno-align-commons
dwnom.f:1516.20:

      COMMON /XXCOM/ ZMID(99001,2),XDATA(54001,9),DYN(99001,2),         
                    1
Warning: Padding of 1 bytes required before 'numcong' in COMMON 'xxcom' at (1); reorder elements or use -fno-align-commons
dwnom.f:1502.29:

      SUBROUTINE XINT(NEP,ID1,XPLOG0,XPLOG1,XPLOG2,XPLOG3,              
                             1
Warning: Unused dummy argument 'id1' at (1)
dwnom.f:1240.20:

      COMMON /XXCOM/ ZMID(99001,2),XDATA(54001,9),DYN(99001,2),         
                    1
Warning: Padding of 1 bytes required before 'numcong' in COMMON 'xxcom' at (1); reorder elements or use -fno-align-commons
dwnom.f:2561.20:

      COMMON /XXCOM/ ZMID(99001,2),XDATA(54001,9),DYN(99001,2),         
                    1
Warning: Padding of 1 bytes required before 'numcong' in COMMON 'xxcom' at (1); reorder elements or use -fno-align-commons
dwnom.f:2553.42:

      SUBROUTINE RCINT2(IICONG,NEQ,NPC,NQC,KRC,KTOTP,KTOTQ,             
                                          1
Warning: Unused dummy argument 'nqc' at (1)
dwnom.f:2431.20:

      COMMON /XXCOM/ ZMID(99001,2),XDATA(54001,9),DYN(99001,2),         
                    1
Warning: Padding of 1 bytes required before 'numcong' in COMMON 'xxcom' at (1); reorder elements or use -fno-align-commons
dwnom.f:2424.31:

      SUBROUTINE PROLLC2(IICONG,NEQ,NPC,KTOT,KTOTP,KTOTQ,               
                               1
Warning: Unused dummy argument 'iicong' at (1)
dwnom.f:2424.56:

      SUBROUTINE PROLLC2(IICONG,NEQ,NPC,KTOT,KTOTP,KTOTQ,               
                                                        1
Warning: Unused dummy argument 'ktotq' at (1)
dwnom.f:3758.29:

      SUBROUTINE CUTPLANE(JJJ,NP,NRCALL,NS,XMAT,ZVEC,WS,                
                             1
Warning: Unused dummy argument 'jjj' at (1)
dwnom.f:3922.28:

      SUBROUTINE SEARCH(IIII,JX,NCUT,NS,NP,NRCALL,KCUT,LCUT,KTT,KT,     
                            1
Warning: Unused dummy argument 'iiii' at (1)
dwnom.f:3924.46:

     C                  KITTY1,KITTY2,KYES,KNO,LDATA)                   
                                              1
Warning: Unused dummy argument 'kno' at (1)
dwnom.f:3924.42:

     C                  KITTY1,KITTY2,KYES,KNO,LDATA)                   
                                          1
Warning: Unused dummy argument 'kyes' at (1)
dwnom.f:8418.36:

      INTEGER FUNCTION N1RGB (IDUMMY)                                   
                                    1
Warning: Unused dummy argument 'idummy' at (1)
dwnom.f:677.20:

      COMMON /XXCOM/ ZMID(99001,2),XDATA(54001,9),DYN(99001,2),         
                    1
Warning: Padding of 1 bytes required before 'numcong' in COMMON 'xxcom' at (1); reorder elements or use -fno-align-commons
dwnom.f:773.20:

      COMMON /XXCOM/ ZMID(99001,2),XDATA(54001,9),DYN(99001,2),         
                    1
Warning: Padding of 1 bytes required before 'numcong' in COMMON 'xxcom' at (1); reorder elements or use -fno-align-commons
dwnom.f:55.20:

      COMMON /XXCOM/ ZMID(99001,2),XDATA(54001,9),DYN(99001,2),         
                    1
Warning: Padding of 1 bytes required before 'numcong' in COMMON 'xxcom' at (1); reorder elements or use -fno-align-commons
dwnom.f:66.21:

      INTEGER*2 ITIM1,ITIM2,ITIM3,ITIM4,JTIM1,JTIM2,JTIM3,JTIM4         
                     1
Warning: Unused variable 'itim1' declared at (1)
dwnom.f:66.27:

      INTEGER*2 ITIM1,ITIM2,ITIM3,ITIM4,JTIM1,JTIM2,JTIM3,JTIM4         
                           1
Warning: Unused variable 'itim2' declared at (1)
dwnom.f:66.33:

      INTEGER*2 ITIM1,ITIM2,ITIM3,ITIM4,JTIM1,JTIM2,JTIM3,JTIM4         
                                 1
Warning: Unused variable 'itim3' declared at (1)
dwnom.f:66.39:

      INTEGER*2 ITIM1,ITIM2,ITIM3,ITIM4,JTIM1,JTIM2,JTIM3,JTIM4         
                                       1
Warning: Unused variable 'itim4' declared at (1)
dwnom.f:66.45:

      INTEGER*2 ITIM1,ITIM2,ITIM3,ITIM4,JTIM1,JTIM2,JTIM3,JTIM4         
                                             1
Warning: Unused variable 'jtim1' declared at (1)
dwnom.f:66.51:

      INTEGER*2 ITIM1,ITIM2,ITIM3,ITIM4,JTIM1,JTIM2,JTIM3,JTIM4         
                                                   1
Warning: Unused variable 'jtim2' declared at (1)
dwnom.f:66.57:

      INTEGER*2 ITIM1,ITIM2,ITIM3,ITIM4,JTIM1,JTIM2,JTIM3,JTIM4         
                                                         1
Warning: Unused variable 'jtim3' declared at (1)
dwnom.f:66.63:

      INTEGER*2 ITIM1,ITIM2,ITIM3,ITIM4,JTIM1,JTIM2,JTIM3,JTIM4         
                                                               1
Warning: Unused variable 'jtim4' declared at (1)
dwnom.f:44.32:

      dimension ID1(54001),LVOTE(3600),YY(150000),                      
                                1
Warning: Unused variable 'lvote' declared at (1)
dwnom.f: In function ‘plog’:
dwnom.f:1173:0: warning: ‘zdistf’ may be used uninitialized in this function [-Wmaybe-uninitialized]
                ZDISTF=ZDF(NDEVIT-1+KWIMJ+1,2)
 ^
dwnom.f:1182:0: warning: ‘cdflog’ may be used uninitialized in this function [-Wmaybe-uninitialized]
             YPLOG=YPLOG+CDFLOG
 ^
dwnom.f: In function ‘prox’:
dwnom.f:1416:0: warning: ‘zdistf’ may be used uninitialized in this function [-Wmaybe-uninitialized]
             ZDISTF=ZDF(NDEVIT-1+KWIMJ+1,2)
 ^
dwnom.f:1425:0: warning: ‘cdflog’ may be used uninitialized in this function [-Wmaybe-uninitialized]
          YPLOG=YPLOG+CDFLOG
 ^
dwnom.f: In function ‘tql2’:
dwnom.f:3552:0: warning: ‘s2’ may be used uninitialized in this function [-Wmaybe-uninitialized]
          P = -S * S2 * C3 * EL1 * E(L) / DL1
 ^
dwnom.f:3552:0: warning: ‘c3’ may be used uninitialized in this function [-Wmaybe-uninitialized]
dwnom.f: In function ‘tqlrat’:
dwnom.f:3652:0: warning: ‘c’ may be used uninitialized in this function [-Wmaybe-uninitialized]
             IF (E2(M) .LE. C) GO TO 120
 ^
dwnom.f:3682:0: warning: ‘b’ may be used uninitialized in this function [-Wmaybe-uninitialized]
             P = G * H
 ^
dwnom.f: In function ‘xint’:
dwnom.f:1669:0: warning: ‘savegmp’ may be used uninitialized in this function [-Wmaybe-uninitialized]
          SAVEGMP=EXP(XPLOG/FLOAT(KRC))
 ^
dwnom.f: In function ‘prollc2’:
dwnom.f:2528:0: warning: ‘zdistf’ may be used uninitialized in this function [-Wmaybe-uninitialized]
             ZDISTF=ZDF(NDEVIT-1+KWIMJ+1,2)
 ^
dwnom.f:2535:0: warning: ‘cdflog’ may be used uninitialized in this function [-Wmaybe-uninitialized]
          XPLOG=XPLOG+CDFLOG
 ^
dwnom.f: In function ‘snrm2’:
dwnom.f:6459:0: warning: ‘xmax’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    80 IF (ABS(SX(I)) .LE. XMAX) GO TO 90
 ^
dwnom.f: In function ‘i1kst’:
dwnom.f:7907:0: warning: ‘__result_i1kst’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       INTEGER FUNCTION I1KST (NFACT)
 ^
dwnom.f: In function ‘l3vrr’:
dwnom.f:5016:0: warning: ‘ls’ may be used uninitialized in this function [-Wmaybe-uninitialized]
             IF (LS .EQ. L) THEN
 ^
dwnom.f:4797:0: warning: ‘l’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       INTEGER    I, IEND, INFO, ISTART, ITER, J, JOBU, K, KASE, KK, L,
 ^
dwnom.f: In function ‘i1kqu’:
dwnom.f:7999:0: warning: ‘__result_i1kqu’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       INTEGER FUNCTION I1KQU (ITYPE)
 ^
dwnom.f: In function ‘i1kgt’:
dwnom.f:5740:0: warning: ‘__result_i1kgt’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       INTEGER FUNCTION I1KGT (NELMTS, ITYPE)
 ^
dwnom.f: In function ‘search’:
dwnom.f:3988:0: warning: ‘jeh’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       JEH=0
 ^
dwnom.f:3990:0: warning: ‘jel’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       JEL=0
 ^
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o dwnominate.so dwnom.o -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0 -L/usr/local/gfortran/lib -lgfortran -lquadmath -lm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0'
ld: warning: directory not found for option '-L/usr/local/gfortran/lib'
installing to /Library/Frameworks/R.framework/Versions/3.6/Resources/library/00LOCK-dwnominate/00new/dwnominate/libs
** R
** data
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** checking absolute paths in shared objects and dynamic libraries
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (dwnominate)

Fortran runtime error: Bad value during integer read

Thanks for providing this package!

I'm trying to run dw-nominate in a setting where there is only a small number of rollcall votes (and relatively small number of legislators). I'm getting an error that says "Fortran runtime error: Bad value during integer read" and am not sure whether it's because of the data constraint, about my session environment, something with the gcc/fortran, or all of these.

I ran these on a mac command-line R. My output and sessionInfo posted below as well. If you could point me towards some direction as to how I might be able to fix this, I'd greatly appreciate it. Thanks!

> library(dwnominate)
> results = dwnominate(rolls, id = "mpid", polarity = "KABANDO WA KABANDO", minvotes=12)
Running Optimal Classification to get starting estimates...

Preparing to run Optimal Classification...

	Checking data...

		... 230 of 530 total members dropped.

		Votes dropped:
		... 10 of 64 total votes dropped.

	Running Optimal Classification...

		Generating Start Coordinates...
		Running Edith Algorithm...
		Getting normal vectors...
		Getting legislator coordinates...
		Getting normal vectors...
		Getting legislator coordinates...
		Getting normal vectors...
		Getting legislator coordinates...
		Getting normal vectors...
		Getting legislator coordinates...
		Getting normal vectors...
		Getting legislator coordinates...
		Getting normal vectors...
		Getting legislator coordinates...
		Getting normal vectors...
		Getting legislator coordinates...
		Getting normal vectors...
		Getting legislator coordinates...
		Getting normal vectors...
		Getting legislator coordinates...
		Getting normal vectors...
		Getting legislator coordinates...


Optimal Classification completed successfully.
Optimal Classification took 3.986 seconds to execute.

Writing DW-NOMINATE input files...

rollcall_input.dat
rollcall_output.dat
legislator_input.dat
legislator_output.dat
session_info.num
rollcall_matrix.vt3
transposed_rollcall_matrix.vt3
NOMINAL DYNAMIC-WEIGHTED MULTIDIMENSIONAL UNFOLDING
    2    1    1    2    1    5
  5.9539  0.3463
 NUMBER OF CONGRESSES     2
 TOTAL ROLL CALLS 01-108      64
At line 339 of file dwnom.f (unit = 20, file = 'legislator_input.dat')
Fortran runtime error: Bad value during integer read
> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.4

Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.17         splines_3.5.0        MASS_7.3-49          evd_2.3-3            bit_1.1-14           prodlim_2018.04.18
 [7] ffbase_0.12.3        RecordLinkage_0.4-10 xtable_1.8-2         lattice_0.20-35      fastmatch_1.1-0      ada_2.0-5
[13] blob_1.1.1           tools_3.5.0          nnet_7.3-12          grid_3.5.0           ipred_0.9-6          data.table_1.11.4
[19] ff_2.2-14            e1071_1.6-8          DBI_1.0.0            class_7.3-14         survival_2.41-3      bit64_0.9-7
[25] digest_0.6.15        Matrix_1.2-14        lava_1.6.1           rpart_4.1-13         memoise_1.1.0        RSQLite_2.1.1
[31] compiler_3.5.0

Rewrite DW-NOMINATE in R

This is an ambitious and longer-term goal, but it would have a big payoff. Having DW-NOMINATE written in R (or at least mostly in R) would:

  • make package maintenance easier
  • make the code easier to understand and modify/extend
  • solve some licensing issues

There's no telling if I will actually do this. But it would be cool if I did.

Edit: The code from the (abandoned?) pynominate project is much easier to follow. Using that as a guide, converting it to R may not be so hard. https://github.com/voteview/pynominate

Weights Parameter Output

Hello,
I'm writing with a question more than an issue exactly. I'm wondering whether the outcome of your dwnominate procedure stores the estimated weight parameter anywhere. I can't seem to find it. I know that the default starting value for the weight parameter is w = 0.3463, and in the stored OC or common_space objects used as starting points I can also find the "fits" parameters which can be used for the weights as well, but both these values describe the starting points for the weights parameter, I think, and not the final weight parameter estimated by dwnominate.

So my questions are two:
First, is the second dimension of the dwnominate output already weighted? That is, has results$legislators$coord2D already been multiplied by the output weight parameter?

Second, is there a way to find the output weight parameter after dwnominate has been carried out, or should I simply use results$start$fits to create weights after the estimation?

The main reason I am asking this is because I am trying to estimate cutting lines for the dwnominate estimates. To do so both coord2D and certain bill-level parameters have to be multiplied by the weight parameter, and while looking through the code I was unsure whether coord2D was already multiplied by weights, and where the weight parameter can be found to multiply it by certain bill-level parameters.

Thank you and best,
Andy Carrizosa

No license for DW-NOMINATE.FOR

I can't seem to get license info for DW-NOMINATE.FOR (the original source code), which puts this package in a legally unhappy situation. Keith Poole's website says

Keith and Howard adhere to the policy that all of their datasets and software are made freely available to anyone who asks for them. This webserver was established for this purpose.

but that doesn't meet the legal requirements for a license. Since Nolan McCarty wrote the code, presumably the license is up to him.

No one seems to have a problem with me distributing the code this way, so the main practical issue is that I can't put this on CRAN until this issue is resolved.

Remove extra lapack dependency on Windows

Should only use the subset of lapack that gets installed with R on Windows, instead of including extra lapack source code (R CMD check complains about it). Should check wnominate to see which lapack functions it uses, maybe I can use the same approach.

Edit: In oc, they replace LSVRR from IMSL with DGESDD from lapack. (I replaced it with SGESVD here.) Seems like the solution is to use the double precision as opposed to real version of the functions. wnominate uses eispack instead of lapack, which I don't want to copy.

  • SGESVD -> DGESDD
  • SSYEV -> DSYEV

Issue with installation

I am trying to install this package on a machine running Windows 11. RTools is installed already:

remotes::install_github('wmay/dwnominate')

And this leads to the following error:

> remotes::install_github('wmay/dwnominate')
Downloading GitHub repo wmay/dwnominate@HEAD
── R CMD build ──────────────────────────────────────────────────────────
✔  checking for file 'C:\Users\PRIVATE\AppData\Local\Temp\RtmpCE5T7Q\remotes3b8c7c4e2e86\wmay-dwnominate-7b50c99/DESCRIPTION' (506ms)
─  preparing 'dwnominate': (480ms)
✔  checking DESCRIPTION meta-information ... 
─  cleaning src
─  installing the package to process help pages (355ms)
         -----------------------------------
─  installing *source* package 'dwnominate' ...
   ** using staged installation
   ** libs
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/ieeeck.f -o lapack/ieeeck.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/ilaenv.f -o lapack/ilaenv.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/ilaslc.f -o lapack/ilaslc.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/ilaslr.f -o lapack/ilaslr.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/iparmq.f -o lapack/iparmq.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/lsame.f -o lapack/lsame.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/saxpy.f -o lapack/saxpy.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sbdsqr.f -o lapack/sbdsqr.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/scombssq.f -o lapack/scombssq.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/scopy.f -o lapack/scopy.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sdot.f -o lapack/sdot.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sgebd2.f -o lapack/sgebd2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sgebrd.f -o lapack/sgebrd.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sgelq2.f -o lapack/sgelq2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sgelqf.f -o lapack/sgelqf.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sgemm.f -o lapack/sgemm.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sgemv.f -o lapack/sgemv.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sgeqr2.f -o lapack/sgeqr2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sgeqrf.f -o lapack/sgeqrf.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sger.f -o lapack/sger.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sgesvd.f -o lapack/sgesvd.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sisnan.f -o lapack/sisnan.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slabrd.f -o lapack/slabrd.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slacpy.f -o lapack/slacpy.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slae2.f -o lapack/slae2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slaev2.f -o lapack/slaev2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slaisnan.f -o lapack/slaisnan.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slamch.f -o lapack/slamch.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slange.f -o lapack/slange.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slanst.f -o lapack/slanst.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slansy.f -o lapack/slansy.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slapy2.f -o lapack/slapy2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slarf.f -o lapack/slarf.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slarfb.f -o lapack/slarfb.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slarfg.f -o lapack/slarfg.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slarft.f -o lapack/slarft.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slartg.f -o lapack/slartg.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slas2.f -o lapack/slas2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slascl.f -o lapack/slascl.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slaset.f -o lapack/slaset.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slasq1.f -o lapack/slasq1.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slasq2.f -o lapack/slasq2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slasq3.f -o lapack/slasq3.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slasq4.f -o lapack/slasq4.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slasq5.f -o lapack/slasq5.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slasq6.f -o lapack/slasq6.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slasr.f -o lapack/slasr.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slasrt.f -o lapack/slasrt.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slassq.f -o lapack/slassq.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slasv2.f -o lapack/slasv2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/slatrd.f -o lapack/slatrd.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/snrm2.f -o lapack/snrm2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sorg2l.f -o lapack/sorg2l.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sorg2r.f -o lapack/sorg2r.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sorgbr.f -o lapack/sorgbr.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sorgl2.f -o lapack/sorgl2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sorglq.f -o lapack/sorglq.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sorgql.f -o lapack/sorgql.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sorgqr.f -o lapack/sorgqr.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sorgtr.f -o lapack/sorgtr.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sorm2r.f -o lapack/sorm2r.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sormbr.f -o lapack/sormbr.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sorml2.f -o lapack/sorml2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sormlq.f -o lapack/sormlq.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sormqr.f -o lapack/sormqr.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/srot.f -o lapack/srot.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sscal.f -o lapack/sscal.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/ssteqr.f -o lapack/ssteqr.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/ssterf.f -o lapack/ssterf.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/sswap.f -o lapack/sswap.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/ssyev.f -o lapack/ssyev.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/ssymv.f -o lapack/ssymv.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/ssyr2.f -o lapack/ssyr2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/ssyr2k.f -o lapack/ssyr2k.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/ssytd2.f -o lapack/ssytd2.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/ssytrd.f -o lapack/ssytrd.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/strmm.f -o lapack/strmm.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/strmv.f -o lapack/strmv.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c lapack/xerbla.f -o lapack/xerbla.o
   gfortran  -fno-optimize-sibling-calls    -O2  -mfpmath=sse -msse2 -mstackrealign  -c DW-NOMINATE.f -o DW-NOMINATE.o
   DW-NOMINATE.f:843:72:
   
     843 |       IF(I-NP-1)61,12,12
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
   DW-NOMINATE.f:855:72:
   
     855 |          IF(LCUT-KA(J))33,5,33
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
   DW-NOMINATE.f:856:72:
   
     856 |   33     IF(KCUT-KA(J))3,6,3
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
   DW-NOMINATE.f:1159:72:
   
    1159 |       DO 40 J=1,4*NS
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Shared DO termination label 40 at (1)
   DW-NOMINATE.f:1356:72:
   
    1356 |          DO 32 JJJ=1,NS
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Shared DO termination label 32 at (1)
   DW-NOMINATE.f:1361:72:
   
    1361 |             DO 33 JJJ=1,2*NS
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Shared DO termination label 33 at (1)
   DW-NOMINATE.f:1367:72:
   
    1367 |             DO 34 JJJ=1,3*NS
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Shared DO termination label 34 at (1)
   DW-NOMINATE.f:1373:72:
   
    1373 |             DO 35 JJJ=1,4*NS
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Shared DO termination label 35 at (1)
   DW-NOMINATE.f:2173:72:
   
    2173 |       DO 60 K=1,NS
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Shared DO termination label 60 at (1)
   DW-NOMINATE.f:2180:72:
   
    2180 |   60  OUTX0(I,K)=SUM
         |                                                                        1
   Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 60 at (1)
   DW-NOMINATE.f:2191:72:
   
    2191 |          DO 63 K=1,2*NS
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Shared DO termination label 63 at (1)
   DW-NOMINATE.f:2199:72:
   
    2199 |   63     OUTX1(I,K)=SUM
         |                                                                        1
   Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 63 at (1)
   DW-NOMINATE.f:2211:72:
   
    2211 |          DO 65 K=1,3*NS
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Shared DO termination label 65 at (1)
   DW-NOMINATE.f:2219:72:
   
    2219 |   65     OUTX2(I,K)=SUM
         |                                                                        1
   Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 65 at (1)
   DW-NOMINATE.f:2231:72:
   
    2231 |          DO 67 K=1,4*NS
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Shared DO termination label 67 at (1)
   DW-NOMINATE.f:2239:72:
   
    2239 |   67     OUTX3(I,K)=SUM
         |                                                                        1
   Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 67 at (1)
   DW-NOMINATE.f:2267:72:
   
    2267 |       DO 1 JJ=1,NF
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Shared DO termination label 1 at (1)
   DW-NOMINATE.f:2270:72:
   
    2270 |   2   SUM=SUM+A(I,J)*A(I,JJ)
         |                                                                        1
   Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 2 at (1)
   DW-NOMINATE.f:2271:72:
   
    2271 |   1   B(J,JJ)=SUM
         |                                                                        1
   Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 1 at (1)
   DW-NOMINATE.f:2279:72:
   
    2279 |       DO 60 K=1,NF
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Shared DO termination label 60 at (1)
   DW-NOMINATE.f:2286:72:
   
    2286 |   60  C(I,K)=SUM
         |                                                                        1
   Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 60 at (1)
   DW-NOMINATE.f:2291:72:
   
    2291 |       DO 3 J=1,NF
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Shared DO termination label 3 at (1)
   DW-NOMINATE.f:2294:72:
   
    2294 |   4   SUM=SUM+C(J,JJ)*A(I,JJ)
         |                                                                        1
   Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 4 at (1)
   DW-NOMINATE.f:2295:72:
   
    2295 |   3   BB(J,I)=SUM
         |                                                                        1
   Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 3 at (1)
   DW-NOMINATE.f:2302:72:
   
    2302 |   6   SUM=SUM+BB(JJ,J)*Y(J)
         |                                                                        1
   Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 6 at (1)
   DW-NOMINATE.f:2303:72:
   
    2303 |   5   V(JJ)=SUM
         |                                                                        1
   Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 5 at (1)
   DW-NOMINATE.f:3442:72:
   
    3442 |       IF(I-NP-1)61,12,12
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
   DW-NOMINATE.f:3454:72:
   
    3454 |          IF(LCUT-KA(J))33,5,33
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
   DW-NOMINATE.f:3455:72:
   
    3455 |   33     IF(KCUT-KA(J))3,6,3
         |                                                                        1
   Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
   DW-NOMINATE.f:153:45:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2                
   ......
     153 |  425  call intpr('NUMBER OF CONGRESSES', -1, I, 1)
         |                                             1
   Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:192:41:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2            
   ......
     192 |  475  call intpr('TOTAL ROLL CALLS', -1, I, 1)
         |                                         1
   Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:224:42:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2             
   ......
     224 |  450  call intpr('TOTAL LEGISLATORS', -1, I, 1)
         |                                          1
   Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:225:25:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2
   ......
     225 |       call intpr(' ', 1, 0, 0)
         |                         1
   Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:234:59:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2                              
   ......
     234 |          call intpr('Estimating dimension weights...', -1, 0, 0)
         |                                                           1
   Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:241:43:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2              
   ......
     241 |       call intpr('Estimating beta...', -1, 0, 0)
         |                                           1
   Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:249:56:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2                           
   ......
     249 |       call intpr('Estimating roll call vectors...', -1, 0, 0)
         |                                                        1
   Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:491:61:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2                                
   ......
     491 |       call intpr('Estimating legislator coordinates...', -1, 0, 0)
         |                                                             1
   Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   make: *** [C:/PROGRA~1/R/R-42~1.2/etc/x64/Makeconf:277: DW-NOMINATE.o] Error 1
   ERROR: compilation failed for package 'dwnominate'
─  removing 'C:/Users/PRIVATE/AppData/Local/Temp/RtmpyUDsVk/Rinsta09078d49d6/dwnominate'
         -----------------------------------
   ERROR: package installation failed
Error: Failed to install 'dwnominate' from GitHub:
  ! System command 'Rcmd.exe' failed

Any ideas on what's going wrong here? Thank you!

Error: NAs in foreign function call (arg 14)

I have installed the latest dwnominate from GitHub. When I run my code (under Linux) I get the following runtime error:

> res <- dwnominate::dwnominate(l, id="ID", dims=1)
Calculating W-NOMINATE scores for each session...
Extracting common space scores...
Running DW-NOMINATE...
Error in dwnominate::dwnominate(l, id = "ID", dims = 1) :
  NAs in foreign function call (arg 14)
In addition: There were 16 warnings (use warnings() to see them)

Here are the warnings:

> warnings()
Warning messages:
1: In max(distances, na.rm = T) : no non-missing arguments to max; returning -Inf
2: Unknown or uninitialised column: `icpsrState`.
3: Unknown or uninitialised column: `cd`.
4: Unknown or uninitialised column: `icpsrState`.
5: Unknown or uninitialised column: `cd`.
6: Unknown or uninitialised column: `icpsrState`.
7: Unknown or uninitialised column: `cd`.
8: Unknown or uninitialised column: `icpsrState`.
9: Unknown or uninitialised column: `cd`.
10: Unknown or uninitialised column: `state`.
11: Unknown or uninitialised column: `icpsrState`.
12: Unknown or uninitialised column: `cd`.
13: Unknown or uninitialised column: `state`.
14: Unknown or uninitialised column: `icpsrState`.
15: Unknown or uninitialised column: `cd`.
16: Unknown or uninitialised column: `state`.

Here some observations:

  1. The same code works fine with older versions of dwnominate (I will try to pin down exactly which commit started causing this problem).
  2. I can run the same version of dwnominate just fine against the nhsenate test data.

Running dwnominate on the Swedish parliament

Hi, thanks for providing this good interface!

I'm working on running DW-NOMINATE on the Swedish parliament. I have the data and I'm able to convert it into the KH-format that seems to be what the fortran code consumes. I'm trying to get the the first and second DW-NOMINATE dimension of a particular legislator in relation to other legislators over time. I would also like to get the means for the different parties but that seems to be trivial since there are some prior art in the plot function in this repository.

I should say that I've never wrote a line of R before but I do know a bunch of other languages so this might be (probably) a rookie question. Sorry. My goal here is to extract enough information so I can continue working in a language I'm more fluent in.

The results i get back from dwnominate seems to be to contain a legislators, dimensions and rollcall fields.
I can print the names along with the first dimension coordinate with print(data.frame(name=results$legislators$name, coord=results$legislators$coord1D)). That prints each legislator three times but they seem to have the same coordinates each time the legislator is printed. Can it really be that the legislators did not change their sentiment down to the tenth decimal over three years?

Also is there any way to get a higher resolution coordinates than per year?

Sorry for the rambling question but I would bre really greatful if you could give me some pointers.

Just to get warmed up I tried some data on the US House just to see if everything is working.
I use data from https://legacy.voteview.com/house112.htm and https://legacy.voteview.com/house113.htm for the 112th and 113th congress.
The files I'm using looks like this:

1129991199 0USA     100  OBAMA      99999999999...
1122030041 1ALABAMA 20001BONNER     11161111116...
1122119241 2ALABAMA 20001ROBY       11161111116...
...

The entire code I'm using looks like this. Reading the KH files and converting it to rollcall-objects with pscl and then sending it into dwnominate:

library(dwnominate)
library(pscl)

h111 = readKH("hou111kh.ord", desc="111th U.S. House")
h112 = readKH("hou112kh.ord", desc="112th U.S. House")
h113 = readKH("hou113kh.ord", desc="113th U.S. House")

results <- dwnominate(list(h111, h112, h113))
plot(results)

print(data.frame(name=results$legislators$name, coord=results$legislators$coord1D))

Error: $ operator is invalid for atomic vectors

Hello,

This may be a very elementary-level question.. but I am trying to run dwnominate with a csv file and I keep getting that error message. Do you have any suggestions to fix this problem?

Major Error 20

Hello,
I have successfully been able to run the dwnominate procedure on my data in the past. At some point, however, the package has started crashing when trying to re-estimate the ideal points. I have not changed my code or data really since the last time I ran the procedure, so I think there might have been an error in one of the updates.

When I run the procedure in Windows, the package runs separate wnominate procedures for each legislative period to get the priors for dwnominate (previously the program ran a pooled OC to get the priors I think). Then dwnominate proper starts running, and it starts estimating weights, betas, roll call vectors, but tends to crash on estimating legislator coordinates. I ran the same code in linux to see if it worked there, and the same thing happens, but when I run dwnominate in linux I at least get a message that says "MAJOR ERROR 20".

I don't know if more people have been experiencing the same problem, but I wanted to make it known in case a solution can be found. If you need me to provide more details about the issue please let me know how I can help.
Best,
Andy Carrizosa

Model stops due to missing variables

Hi, and shortly a big thanks for your work!

I've run into the issue that the new version you've put online around summer does require some variables in the rollcall object which was not necessary in earlier versions. As it is not documented which variables are required, other users might end up with the same problem, especially when applying the same model for other legislatures than the US.

Notably, within write_leg_file() the procedure stops if you do not have rcl$state, rcl$icpsrState and rcl$cd (I suppose the same applies to other stuff which is, as I gather, not necessarily required for the model to compute voting position). As a workaround, I defined blank variables before creating the rollcall objects. However, a procedure which would not end up with an error might be more tangible, such as for example using is.null() instead of is.na() in lines 122-126:

all_state_nums = ifelsec(all_state_nums, ifelse(is.null(rcl$icpsrState), 0, rcl$icpsrState))

If not, I'd suggest documenting which variables are necessary so that users can adapt (not all countries have states, for example).

Thanks!

R shuts down when trying to run dwnominate on mac

Hi,

I am trying to run the dwnominate function in Rstudio (Version 1.0.143), running R version 3.4.0 on a mac (macOS 10.12.5) machine. I use rollcall data of Swiss MPs. It first successfully computes the W-NOMINATE scores, but then R always shuts down (I attached a screenshot of the error message):

bildschirmfoto 2017-07-10 um 19 11 18

Is there a problem with the fact that I try to run this on mac? Do I have to first Install the Fortran program of Poole on my machine or does this get done by default when I install the R-package? And if I have to first install the Fortran program, is this even possible on a mac machine?

I am very new to working with Fortran, I hope, someone can help me.

Thank you!

David

Installation fails on Mac (gfortran problem)

Hi William

I just wanted to reinstall dwnominate after upgrading my Mac. I now have the problem that I cannot install the package anymore. I think it might still have to do with the gfortran Problem we encountered in this issue. However, I cannot seem to install gfortran version 4.8.2 on my mac anymore, since the machine is giving me an error that a newer version is already installed. And the version in the link you posted in the above cited issue is not there anymore. Also e.g. on Homebrew, this version is not even downloadable anymore.

Is there a way that I can still work with this great package? Is ist somehow possible to make it work with newer gfortran versions?

In the following, I post the full error that R gives me, when I try to install dwnominate with remotes::install_github('wmay/dwnominate'):

Downloading GitHub repo wmay/dwnominate@HEAD
✓  checking for file ‘/private/var/folders/ng/l43c_dyx60qgt9npy25q9pm00000gn/T/RtmpPDIG49/remotes735b1a75a8cc/wmay-dwnominate-7b50c99/DESCRIPTION’ (392ms)
─  preparing ‘dwnominate’:
✓  checking DESCRIPTION meta-information ...
─  cleaning src
─  installing the package to process help pages
         -----------------------------------
─  installing *source* package ‘dwnominate’ ...
   ** using staged installation
   ** libs
   gfortran -mmacosx-version-min=10.13 -fno-optimize-sibling-calls -std=legacy -fPIC  -Wall -g -O2  -c DW-NOMINATE.f -o DW-NOMINATE.o
   DW-NOMINATE.f:192:4:
   
     192 |  475  call intpr('TOTAL ROLL CALLS', -1, I, 1)
         |    1
   Warning: Label 475 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:224:4:
   
     224 |  450  call intpr('TOTAL LEGISLATORS', -1, I, 1)
         |    1
   Warning: Label 450 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:153:4:
   
     153 |  425  call intpr('NUMBER OF CONGRESSES', -1, I, 1)
         |    1
   Warning: Label 425 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:120:25:
   
     120 |       WEIGHT(1:(NS+1)) = WEIGHTSIN
         |                         1
   Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1) [-Wconversion]
   DW-NOMINATE.f:158:48:
   
     158 |       DYN(1:size(DYNIN, 1), 1:size(DYNIN, 2)) = DYNIN
         |                                                1
   Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1) [-Wconversion]
   DW-NOMINATE.f:159:51:
   
     159 |       ZMID(1:size(ZMIDIN, 1), 1:size(ZMIDIN, 2)) = ZMIDIN
         |                                                   1
   Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1) [-Wconversion]
   DW-NOMINATE.f:199:54:
   
     199 |       XDATA(1:size(XDATAIN, 1), 1:size(XDATAIN, 2)) = XDATAIN
         |                                                      1
   Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1) [-Wconversion]
   DW-NOMINATE.f:752:5:
   
     752 |  1111 FORMAT(2F15.3)
         |     1
   Warning: Label 1111 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:982:5:
   
     982 |  1007 FORMAT(' LNL',2I10,F15.3,10F8.4)
         |     1
   Warning: Label 1007 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:981:5:
   
     981 |  1006 FORMAT(I10,11F20.3)
         |     1
   Warning: Label 1006 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:980:5:
   
     980 |  1005 FORMAT(I4,2I5,I8,3F15.3)
         |     1
   Warning: Label 1005 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:979:5:
   
     979 |  1004 FORMAT(5I8,6F15.3)
         |     1
   Warning: Label 1004 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:978:5:
   
     978 |  1003 FORMAT(4I4,3F15.3)
         |     1
   Warning: Label 1003 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:977:5:
   
     977 |  1002 FORMAT(' LOG-L',2I10,10F8.5)
         |     1
   Warning: Label 1002 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:976:5:
   
     976 |  1001 FORMAT(I4,F5.2,F10.7)
         |     1
   Warning: Label 1001 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:667:5:
   
     667 |  1111 FORMAT(2F15.3)
         |     1
   Warning: Label 1111 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2810:11:
   
    2810 |       IJ = I+(J-I)*R
         |           1
   Warning: Possible change of value in conversion from REAL(4) to INTEGER(4) at (1) [-Wconversion]
   DW-NOMINATE.f:886:5:
   
     886 |  1001 FORMAT(I4,F7.3,I2,4I4,F7.3)
         |     1
   Warning: Label 1001 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2936:5:
   
    2936 |  1094 FORMAT(' RC  CLASSIFICATION ERROR  ',2I3,2I8,2F10.5)
         |     1
   Warning: Label 1094 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2935:5:
   
    2935 |  1093 FORMAT(' CLASSIFICATION CHECK  ',I3,I8)
         |     1
   Warning: Label 1093 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2934:5:
   
    2934 |   100 FORMAT(5I5)
         |     1
   Warning: Label 100 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:3108:5:
   
    3108 |  3909 FORMAT(I5,I3,6I4,2I8,5I5)
         |     1
   Warning: Label 3909 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:3311:5:
   
    3311 |  3908 FORMAT(I5,I3,10F7.3)
         |     1
   Warning: Label 3908 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:3107:5:
   
    3107 |  1212 FORMAT(I3,I5,7I4)
         |     1
   Warning: Label 1212 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:3106:5:
   
    3106 |  1103 FORMAT(' MIDPOINT DECOMPOSITION',5I6)
         |     1
   Warning: Label 1103 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:3105:5:
   
    3105 |  1099 FORMAT(I3,I5,I3,2I4)
         |     1
   Warning: Label 1099 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:3104:5:
   
    3104 |  1091 FORMAT(' INVERSE MATRIX ERROR',I4,I5,I8,2F10.4)
         |     1
   Warning: Label 1091 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:3103:5:
   
    3103 |   210 FORMAT(I5,10F12.3)
         |     1
   Warning: Label 210 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2323:5:
   
    2323 |  1002 FORMAT(' R-C ',I3,3I5,F7.3,F13.5,2F10.4,2F7.3)
         |     1
   Warning: Label 1002 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2322:5:
   
    2322 |  1001 FORMAT(I4,F5.2,F10.7)
         |     1
   Warning: Label 1001 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2321:5:
   
    2321 |   100 FORMAT(8F7.3)
         |     1
   Warning: Label 100 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2447:5:
   
    2447 |  1004 FORMAT(I4,I5,F12.5,12X,20F7.3)
         |     1
   Warning: Label 1004 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2446:5:
   
    2446 |  1003 FORMAT(' FATAL ERROR ROLL CALL PHASE',2I5)
         |     1
   Warning: Label 1003 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2445:5:
   
    2445 |  1002 FORMAT(I4,I5,2F12.5,20F7.3)
         |     1
   Warning: Label 1002 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2444:5:
   
    2444 |  1001 FORMAT(' RCS',4I5,F7.3,5I4,20F7.3)
         |     1
   Warning: Label 1001 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2443:5:
   
    2443 |   206 FORMAT(I5,4I4,I2,F12.5,20F10.4)
         |     1
   Warning: Label 206 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2442:5:
   
    2442 |   205 FORMAT(I6,2I5,5X,F12.5,20F10.4)
         |     1
   Warning: Label 205 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2441:5:
   
    2441 |   203 FORMAT(I5,2I4,8X,I2,F12.5,20F10.4)
         |     1
   Warning: Label 203 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1428:5:
   
    1428 |  1002 FORMAT(10X,2F10.5,55F7.3)
         |     1
   Warning: Label 1002 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1427:5:
   
    1427 |  1001 FORMAT(' LEG',I6,2I4,2F7.3,2F13.5)
         |     1
   Warning: Label 1001 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1426:5:
   
    1426 |  1000 FORMAT(3I6,I3,1X,11A1,155F7.3)
         |     1
   Warning: Label 1000 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1425:5:
   
    1425 |   307 FORMAT(' NEGATIVE SQUARE ROOT FARTKNOCKER!!')
         |     1
   Warning: Label 307 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1424:5:
   
    1424 |   206 FORMAT(I6,I5,4F8.4,4F12.5)
         |     1
   Warning: Label 206 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1423:5:
   
    1423 |   205 FORMAT(I6,I3,I5,I4,I3,F12.5,30F10.4)
         |     1
   Warning: Label 205 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1422:5:
   
    1422 |   203 FORMAT(I6,I5,F12.5,20F10.4)
         |     1
   Warning: Label 203 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1421:5:
   
    1421 |   201 FORMAT(I6,2I4,150F10.4)
         |     1
   Warning: Label 201 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1420:5:
   
    1420 |   103 FORMAT(12X,30F10.4)
         |     1
   Warning: Label 103 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1419:5:
   
    1419 |   102 FORMAT(2I6,30F10.4)
         |     1
   Warning: Label 102 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1418:5:
   
    1418 |   101 FORMAT(' PERFORMANCE INDEX EIGENVALUE/VECTOR ROUTINE=',3I6)
         |     1
   Warning: Label 101 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2259:5:
   
    2259 |   102 FORMAT(2I5,30F10.4)
         |     1
   Warning: Label 102 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:2258:5:
   
    2258 |   101 FORMAT(' PERFORMANCE INDEX EIGENVALUE/VECTOR ROUTINE=',3I5)
         |     1
   Warning: Label 101 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1155:5:
   
    1155 |  1002 FORMAT(' LEG ',I6,2I6,5F7.3,2F13.5)
         |     1
   Warning: Label 1002 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1154:5:
   
    1154 |  1001 FORMAT(I4,F5.2,F10.7)
         |     1
   Warning: Label 1001 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1153:5:
   
    1153 |   200 FORMAT(I6,2I5,2F13.5)
         |     1
   Warning: Label 200 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:1152:5:
   
    1152 |   100 FORMAT(8F7.3)
         |     1
   Warning: Label 100 at (1) defined but not used [-Wunused-label]
   DW-NOMINATE.f:153:45:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2                
   ......
     153 |  425  call intpr('NUMBER OF CONGRESSES', -1, I, 1)
         |                                             1
   Warning: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:192:41:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2            
   ......
     192 |  475  call intpr('TOTAL ROLL CALLS', -1, I, 1)
         |                                         1
   Warning: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:224:42:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2             
   ......
     224 |  450  call intpr('TOTAL LEGISLATORS', -1, I, 1)
         |                                          1
   Warning: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:225:25:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2
   ......
     225 |       call intpr(' ', 1, 0, 0)
         |                         1
   Warning: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:234:59:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2                              
   ......
     234 |          call intpr('Estimating dimension weights...', -1, 0, 0)
         |                                                           1
   Warning: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:241:43:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2              
   ......
     241 |       call intpr('Estimating beta...', -1, 0, 0)
         |                                           1
   Warning: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:249:56:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2                           
   ......
     249 |       call intpr('Estimating roll call vectors...', -1, 0, 0)
         |                                                        1
   Warning: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:491:61:
   
     118 |       call intpr(FTITLE, 52, (/NS,NMODEL,NFIRST,NLAST,IHAPPY1,IHAPPY2/),
         |                             2                                
   ......
     491 |       call intpr('Estimating legislator coordinates...', -1, 0, 0)
         |                                                             1
   Warning: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
   DW-NOMINATE.f:40:38:
   
      40 |           dimension YY(150000), CUMNML(150000)
         |                                      1
   Warning: Array 'cumnml' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:40:22:
   
      40 |           dimension YY(150000), CUMNML(150000)
         |                      1
   Warning: Array 'yy' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:1409:21:
   
    1409 |       DIMENSION ATIME(152,127),
         |                     1
   Warning: Array 'atime' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:1404:29:
   
    1404 |       SUBROUTINE XINT(NEP,ID1,XPLOG0,XPLOG1,XPLOG2,XPLOG3,
         |                             1
   Warning: Unused dummy argument 'id1' at (1) [-Wunused-dummy-argument]
   DW-NOMINATE.f:2255:13:
   
    2255 |      C     BB(127,152),ZMAT(127,127),WVEC(127),
         |             1
   Warning: Array 'bb' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:2433:42:
   
    2433 |       SUBROUTINE RCINT2(IICONG,NEQ,NPC,NQC,KRC,KTOTP,KTOTQ,
         |                                          1
   Warning: Unused dummy argument 'nqc' at (1) [-Wunused-dummy-argument]
   DW-NOMINATE.f:2313:31:
   
    2313 |       SUBROUTINE PROLLC2(IICONG,NEQ,NPC,KTOT,KTOTP,KTOTQ,
         |                               1
   Warning: Unused dummy argument 'iicong' at (1) [-Wunused-dummy-argument]
   DW-NOMINATE.f:2313:56:
   
    2313 |       SUBROUTINE PROLLC2(IICONG,NEQ,NPC,KTOT,KTOTP,KTOTQ,
         |                                                        1
   Warning: Unused dummy argument 'ktotq' at (1) [-Wunused-dummy-argument]
   DW-NOMINATE.f:2926:29:
   
    2926 |       SUBROUTINE CUTPLANE(JJJ,NP,NRCALL,NS,XMAT,ZVEC,WS,
         |                             1
   Warning: Unused dummy argument 'jjj' at (1) [-Wunused-dummy-argument]
   DW-NOMINATE.f:2928:49:
   
    2928 |       DIMENSION XMAT(1001,25),ZVEC(2901,25),XPROJ(1001,2901),XXY(2901),
         |                                                 1
   Warning: Array 'xproj' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:3090:28:
   
    3090 |       SUBROUTINE SEARCH(IIII,JX,NCUT,NS,NP,NRCALL,KCUT,LCUT,KTT,KT,
         |                            1
   Warning: Unused dummy argument 'iiii' at (1) [-Wunused-dummy-argument]
   DW-NOMINATE.f:3092:46:
   
    3092 |      C                  KITTY1,KITTY2,KYES,KNO,LDATA)
         |                                              1
   Warning: Unused dummy argument 'kno' at (1) [-Wunused-dummy-argument]
   DW-NOMINATE.f:3092:42:
   
    3092 |      C                  KITTY1,KITTY2,KYES,KNO,LDATA)
         |                                          1
   Warning: Unused dummy argument 'kyes' at (1) [-Wunused-dummy-argument]
   DW-NOMINATE.f:3097:54:
   
    3097 |      C          LLVB(2901),LLE(2901),LLEB(2901),LERROR(1001,2901),
         |                                                      1
   Warning: Array 'lerror' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:3099:28:
   
    3099 |      C          ZS(2901),UUU(1001,25),Y16MIDP(1001,25),
         |                            1
   Warning: Array 'uuu' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:3100:54:
   
    3100 |      C          FV1(1001),FV2(1001),SUMX(1001),X16MIDP(1001,25),
         |                                                      1
   Warning: Array 'x16midp' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:3099:45:
   
    3099 |      C          ZS(2901),UUU(1001,25),Y16MIDP(1001,25),
         |                                             1
   Warning: Array 'y16midp' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:3101:20:
   
    3101 |      C          YHAT(61913),LWRONG(1001),
         |                    1
   Warning: Array 'yhat' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:92:19:
   
      92 |       dimension ID1(54001),LVOTE(3600),
         |                   1
   Warning: Array 'id1' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:98:21:
   
      98 |      C          LDATA(1001,2901),LL(2901),YSS(2901),
         |                     1
   Warning: Array 'ldata' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:97:36:
   
      97 |      C          MCUTS(2901,2),LERROR(1001,2901),
         |                                    1
   Warning: Array 'lerror' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:92:32:
   
      92 |       dimension ID1(54001),LVOTE(3600),
         |                                1
   Warning: Unused variable 'lvote' declared at (1) [-Wunused-variable]
   DW-NOMINATE.f:96:20:
   
      96 |      C          XMAT(1001,25),ZVEC(2901,25),WS(5802),
         |                    1
   Warning: Array 'xmat' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:100:20:
   
     100 |      C          XVAR(99999,10)
         |                    1
   Warning: Array 'xvar' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:96:34:
   
      96 |      C          XMAT(1001,25),ZVEC(2901,25),WS(5802),
         |                                  1
   Warning: Array 'zvec' at (1) is larger than limit set by '-fmax-stack-var-size=', moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider using '-frecursive', or increase the '-fmax-stack-var-size=' limit, or change the code to use an ALLOCATABLE array. [-Wsurprising]
   DW-NOMINATE.f:2185:72:
   
    2185 |          CALL SSYEV('V', 'U', 2*NDS, OUTX1, 99, WVEC, WORK, LWORK, INFO)
         |                                                                        ^
   Warning: 'nds' may be used uninitialized [-Wmaybe-uninitialized]
   DW-NOMINATE.f:3354:72:
   
    3354 |       KT=KT+JCH+JCL+JEH+JEL
         |                                                                        ^
   Warning: 'jeh' may be used uninitialized [-Wmaybe-uninitialized]
   DW-NOMINATE.f:3156:9:
   
    3156 |       JEH=0
         |         ^
   note: 'jeh' declared here
   DW-NOMINATE.f:3354:72:
   
    3354 |       KT=KT+JCH+JCL+JEH+JEL
         |                                                                        ^
   Warning: 'jel' may be used uninitialized [-Wmaybe-uninitialized]
   DW-NOMINATE.f:3158:9:
   
    3158 |       JEL=0
         |         ^
   note: 'jel' declared here
   clang -mmacosx-version-min=10.13 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o dwnominate.so DW-NOMINATE.o -L/Library/Frameworks/R.framework/Resources/lib -lRlapack -L/Library/Frameworks/R.framework/Resources/lib -lRblas -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin18/8.2.0 -L/usr/local/gfortran/lib -lgfortran -lquadmath -lm -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin18/8.2.0 -L/usr/local/gfortran/lib -lgfortran -lquadmath -lm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
   ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin18/8.2.0'
   ld: warning: directory not found for option '-L/usr/local/gfortran/lib'
   ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin18/8.2.0'
   ld: warning: directory not found for option '-L/usr/local/gfortran/lib'
   ld: library not found for -lgfortran
   clang: error: linker command failed with exit code 1 (use -v to see invocation)
   make: *** [dwnominate.so] Error 1
   ERROR: compilation failed for package ‘dwnominate’
─  removing ‘/private/var/folders/ng/l43c_dyx60qgt9npy25q9pm00000gn/T/RtmpW1RguH/Rinst7eb611e963e7/dwnominate’
         -----------------------------------
   ERROR: package installation failed
Fehler: Failed to install 'dwnominate' from GitHub:
  System command 'R' failed, exit status: 1, stdout + stderr (last 10 lines):
E> ld: warning: directory not found for option '-L/usr/local/gfortran/lib'
E> ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin18/8.2.0'
E> ld: warning: directory not found for option '-L/usr/local/gfortran/lib'
E> ld: library not found for -lgfortran
E> clang: error: linker command failed with exit code 1 (use -v to see invocation)
E> make: *** [dwnominate.so] Error 1
E> ERROR: compilation failed for package ‘dwnominate’
E> * removing ‘/private/var/folders/ng/l43c_dyx60qgt9npy25q9pm00000gn/T/RtmpW1RguH/Rinst7eb611e963e7/dwnominate’
E>       -----------------------------------
E> ERROR: package installation failed

Thanks for your help and have a nice day
David

Problem with polarity

Hi,

I get the following error when using the dwnomiate()-command with my data:

Error in if (new_legs[polarity[n], "c1"] < median(new_legs$c1, na.rm = TRUE)) { :
missing value where TRUE/FALSE needed

I can also replicate this error with the nhsenate dataset, when I restrict nhsenate to the first four sessions:

dwnominate(nhsenate[1:4], polarity = c("Clifton Below", "Edward (Ned) Gordon"))

Note that both Clifton Below as well as Edward (Ned) Gordon are members of these four sessions. Also note that the code above strangely works for the first five sessions (i.e., for nhsenate[1:5]).

Thank you for your help!

Build broken on Windows

It seems like the commit 7775757 broke the Windows build. The commit just before that still compiles fine on my machine running Windows 10:

> R.version
               _                           
platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          4                           
minor          0.4                         
year           2021                        
month          02                          
day            15                          
svn rev        80002                       
language       R                           
version.string R version 4.0.4 (2021-02-15)
nickname       Lost Library Book           

Here is the errors I get when I try to install dwnominate:

> remotes::install_github('wmay/dwnominate', '77757575d0640778b351d5de4b549f893f8cc89f')

...
   /mingw64/bin/gcc -shared -s -static-libgcc -o dwnominate.dll tmp.def dwnom.o -LC:/PROGRA~1/R/R-40~1.4/bin/x64 -lRlapack -LC:/PROGRA~1/R/R-40~1.4/bin/x64 -lRblas -lgfortran -lm -lquadmath -lgfortran -lm -lquadmath -LC:/PROGRA~1/R/R-40~1.4/bin/x64 -lR
   C:/rtools40/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: dwnom.o:dwnom.f:(.text+0x952d): undefined reference to `sgesvd_'
   C:/rtools40/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: dwnom.o:dwnom.f:(.text+0x9610): undefined reference to `sgesvd_'
   collect2.exe: error: ld returned 1 exit status
   no DLL was created
   ERROR: compilation failed for package 'dwnominate'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.