ผู้ใช้:Ixfd64/ขนาดการแก้ไข

นี่คือ สคริปต์ Rสำหรับการแสดงภาพขนาดไบต์ของหน้า Wikipedia เมื่อเวลาผ่านไป เดิมทีฉันเขียนสิ่งนี้เพื่อมอบหมายงานให้กับ ชั้นเรียน Stat 133 ของฉัน แต่ฉันได้ตัดสินใจที่จะเผยแพร่สู่สาธารณะ ชาววิกิพีเดียคนอื่นๆ สามารถปรับปรุงได้ตามที่เห็นสมควร

รหัสแหล่งที่มา

# เวอร์ชันปัจจุบัน: 1.2.0 
# อัปเดตครั้งล่าสุด: 19 พฤศจิกายน 2552

# โหลดไลบรารี Tcl/Tk

ต้องการ( tcltk )

# สร้าง GUI หลัก

ฐาน =  tktoplevel ( 
) tkwm ชื่อเรื่อง( ฐาน' ขนาดการแก้ไขวิกิพีเดีย' )

#สร้างเฟรมหลัก

nfrm  =  tkframe ( ฐาน)

# สร้างตัวแปร Tcl

การแก้ไขtcl  =  หน้าtclVar ( ' ' ) 
tcl = tclVar ( '' )  

# สร้างช่องข้อความ "เพจ"

f1  =  tkframe ( nfrm ) 
tkpack ( tklabel ( f1 ,  text  =  'Page' ),  side  =  'left' ) 
tkpack ( tkentry ( f1 ,  width  =  25 ,  textvariable  =  page . tcl ),  side  =  'left' )

# สร้างช่องข้อความ "การแก้ไข"

f2  =  tkframe ( nfrm ) 
tkpack ( tklabel ( f2 ,  text  =  'การแก้ไข' ),  side  =  'left' ) 
tkpack ( tkentry ( f2 ,  width  =  8 ,  textvariable  =  การแก้ไข. tcl ),  side  =  'left' )

# องค์ประกอบแพ็ค GUI

tkpack ( f1 ,  ด้านข้าง= 'ด้านบน' ) 
tkpack ( f2 ,  ด้านข้าง= 'ด้านบน' ) 
tkpack ( nfrm )

# รหัสภาษา
# รายการทั้งหมดอยู่ที่ http://meta.wikimedia.org/wiki/List_of_Wikipedias

หลาง =  'en'

#รับขนาดแก้ไขเพจ

getpage  =  function ( ... )  { 
  การแก้ไข =  as . ตัวเลข( tclvalue ( แก้ไข. tcl )) 
  หน้า =  as . ตัวละคร( tclvalue ( page .tcl ) ) 
  หน้าloc = gsub ( ' ' , '_' , หน้า) # แก้ไขการแยกวิเคราะห์พื้นที่ge = function ( s , g ) สตริงย่อย( s , g , g + attr ( g , 'match.length' ) - 1 ) ไบต์pat = '<span class="history-size">(\\([0-9bytesmtp ,]+\\))</span>' historylink = paste ( 'http://' , lang , '.wikipedia. org/w/index.php?title=' , page . loc , '&limit=' , as . character ( revisions ), '&action=history' , sep = '' ) history = readLines ( historylink ) ถ้า( ใด ๆ( grep ( 'ไม่มีประวัติการแก้ไข' , ประวัติศาสตร์))) { tkmessageBox ( title = 'ข้อผิดพลาด' , ข้อความ= 'ไม่มีหน้านี้!' , type = 'ok' ) } else { revisiondata = gsub ( byte . pat , '\ \1' , mapply ( ge , ประวัติศาสตร์[ grep ( ไบต์. pat , ประวัติศาสตร์)], gregexpr ( ไบต์. pat , ประวัติศาสตร์[ grep ( ไบต์. pat ,ประวัติศาสตร์)] ไม่ต้องสนใจ     
             
    
           
    
     
            
  
            - case  =  TRUE ) )  ละเว้นcase = TRUE ) ข้อมูล การแก้ไข= as อักขระ( revisiondata ) revisiondata = gsub ( '[\\(\\), ]' , '' , revisiondata ) สำหรับ( a in 1 : length ( revisiondata )) { if ( revisiondata [ a ] ​​== 'empty' ) { ข้อมูลการแก้ไข[ a ] ​​= ' 0' } } revisiondata = gsub ( '[ไบต์]' , '' , ข้อมูลการแก้ไข) revisiondata = as ตัวเลข( revisiondata , ละเว้น. na = TRUE ) revisiondata = rev ( revisiondata ) plot ( revisiondata , xlab = 'Revision index' , ylab = paste ( 'ขนาดการแก้ไขของ \"' , page , '\" (bytes)' , sep = '' ), พิมพ์= 'l' ) } }  
    
      
      
          
  
      
       
    
                
  


#ออกจากโปรแกรม

ทำลาย =  ฟังก์ชั่น( ... )  tkdestroy ( ฐาน)

#สร้างปุ่ม

bfrm  =  tkframe ( ฐาน) 
tkpack ( tkbutton ( bfrm ,  text  =  'Run' ,  command  =  getpage ),  side  =  'left' ) 
tkpack ( tkbutton ( bfrm ,  text  =  'Quit' ,  command  =  destroy ),  side  =  'right ' )

#แพ็คโครงด้านล่าง

tkpack ( bfrm ด้าน ข้าง =  'ด้านล่าง' )

การใช้งาน

การแก้ไข ทางช้างเผือก 500 ครั้งล่าสุด

สคริปต์นี้จำเป็นต้องติดตั้ง R วิธีที่ดีที่สุดในการใช้สคริปต์นี้คือใส่ไว้ในไฟล์ข้อความที่อยู่ในไดเร็กทอรีของเวิร์กสเปซ R ของคุณ ตัวอย่างเช่น หากคุณตั้งชื่อไฟล์ของคุณว่าwpgraph.txtคุณสามารถเรียกใช้สคริปต์ได้โดยป้อนsource('wpgraph.txt')ในคอนโซล R

ข้อจำกัด

  • อักขระบางตัวไม่ได้รับการประมวลผลอย่างถูกต้อง ตัวอย่างเช่นต้องป้อน " 1+1 " เป็น 1% 2B1
แปลจาก "https://en.wikipedia.org/w/index.php?title=User:Ixfd64/revision_sizes&oldid=1086824036"