วิธีที่ดีในการสอน R ในห้องปฏิบัติการคอมพิวเตอร์คืออะไร


15

มีการคำถามที่ดีหลายประการและชุดของคำตอบในหนังสือเบื้องต้นหรือวิธีการเรียนรู้เช่น R ที่นี่และที่นี่ แต่ฉันมีปัญหาแตกต่างกันเล็กน้อย - วิธีที่ดีที่สุดในการใช้งานเซสชั่นนานหนึ่งชั่วโมง (หรือหลายครั้ง) ในห้องปฏิบัติการคอมพิวเตอร์ที่จะทำให้ผู้คนเริ่มต้นใน R คุ้นเคยกับวิธีการพื้นฐาน ฯลฯ

แผนปัจจุบันของฉันคือการทำงานอย่างมีประสิทธิภาพผ่านบทเบื้องต้นของสิ่งที่ต้องการ SimpleR ของ Verzani จากนั้นแนะนำชุดข้อมูลที่คุ้นเคย แต่มีวิธีอื่นที่ผู้คนพบว่ามีประโยชน์หรือไม่ ตัวอย่างเช่นมันเป็นการดีที่จะแนะนำข้อมูลจริงทันทีหรือปัญหาที่อยู่ในทางที่เป็นนามธรรมมากขึ้น? ฉันควรใช้วิธีนี้อย่างถี่ถ้วนเพื่อใช้วงเล็บเหลี่ยมหรือกระตุ้นผู้คนด้วยตัวอย่างของกราฟิกขัดแตะ?

กลุ่มเป้าหมายของฉันคุ้นเคยกับสถิติ (แม้ว่าไม่ใช่ผู้เชี่ยวชาญ) และผู้ใช้ SPSS ที่มีความเชี่ยวชาญ ไม่คุ้นเคยกับภาษาการเขียนโปรแกรมนอกเหนือจากแมโครและการเขียนสคริปต์ที่คุณจะได้รับใน SPSS และสิ่งที่คล้ายกัน

คำแนะนำหรือการอ้างอิงถึงแผนการสอนใด ๆ จะได้รับการชื่นชม อย่างไรก็ตามฉันไม่ต้องการคัดลอกรายชื่อวัสดุออนไลน์จำนวนมากที่แนะนำ R - อ้างอิงอย่างเคร่งครัดกับคำถามแบบตัวต่อตัว


น่าจะเป็นวิกิชุมชนใช่มั้ย
ปีเตอร์เอลลิส

1
ฟังดูเหมือนเป็นความคิดที่ดีสำหรับฉัน :)
มิเชล

1
สิ่งที่สำคัญอย่างยิ่งต่อการตอบคำถามนี้คือการตั้งค่าของคุณ หากคุณมีซิงเกิ้ล "เซสชั่นชั่วโมงนาน ... ในห้องปฏิบัติการคอมพิวเตอร์" มีเป็นไปได้มากน้อยคุณสามารถทำได้และคุณจะต้องแปลงน้อยมาก หากคุณมี "หลายอย่าง" และพวกเขารู้สถิติและการเขียนโปรแกรมพื้นฐานอย่างละเอียดแล้วคุณสามารถเลือกปั๊มที่พวกเขาสามารถก้าวไปข้างหน้าด้วยตนเองและกระตือรือร้นที่จะลอง แต่สิ่งนี้ต้องใช้วิธีการที่แตกต่าง สำหรับคนที่มีบางส่วนสถิติและไม่มีความรู้เกี่ยวกับการเขียนโปรแกรมหลักสูตรภาคการศึกษาระยะยาวจะเหมาะ
gung - Reinstate Monica

อืมจุดดี @ gung โอเคการตั้งค่าค่อนข้างเจาะจง ฉันเป็นผู้จัดการของพวกเขาและสามารถบอกพวกเขาได้ว่าต้องทำอะไร เรามีเซสชั่นที่ยาวนานเป็นชั่วโมงต่อชั่วโมงในเรื่องทักษะสถิติ (พวกเราหลายคนผลัดกันนำเสนอ) ซึ่งได้รับการปฏิบัติมากขึ้นและเราได้ตกลงที่จะทำสิ่งนั้นในห้องทดลองบนเครื่องด้วยข้อมูลจริง ดังนั้นฉันจึงควรระบุว่าความต้องการที่แท้จริงคือการทำให้พวกเขาคุ้นเคยกับ R ในหนึ่งหรือสองครั้งซึ่งเมื่อเราทำสิ่งต่าง ๆ เช่นแบบจำลองการถดถอยที่เหมาะสมหรือการดูแผนการวินิจฉัยในช่วงต่อมาเราจะไม่ถูกรบกวนโดยพื้นฐาน
ปีเตอร์เอลลิส

2
@gung +1 ที่ยิ่งใหญ่สำหรับความคิดเห็นของคุณอย่างละเอียด ฉันสอน R มานานและในที่สุดก็มาถึงข้อสรุปที่คล้ายกัน: ผู้ที่ไม่มีความเข้าใจในการเขียนโปรแกรมหรือบรรทัดรับคำสั่งอาจมีปัญหาบางอย่างในการจัดการกับ R มันแย่ลงเมื่อเราต้องทำให้นักเรียนคุ้นเคยกับ สถิติที่ใช้ R ในเวลาไม่กี่ชั่วโมง ...
chl

คำตอบ:


7

ฉันขอแย้งกับวิธีที่แตกต่างอย่างสิ้นเชิง ฉันได้เห็นแบบฝึกหัด R ที่สอนจากมุมมองที่แตกต่างกันสองแบบ: วิธีการแบบบล็อกซึ่งผู้ใช้จะได้รับการแนะนำให้รู้จักกับแนวคิดพื้นฐานของ R และวิธีการแบบช็อกและหวาดกลัวซึ่งผู้ใช้จะแสดงความสามารถที่น่าทึ่งของ R ความเข้าใจค่อนข้างน้อยเกี่ยวกับวิธีการทำอะไร อันที่จริงแล้วเสียงสะท้อนดังก้องกับนักเรียนมากขึ้น แต่ก็ไม่มีใครเห็นว่ามีประสิทธิภาพมากในการสร้างผู้ใช้งานจริง

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

ตัวอย่างที่ดีอาจประกอบด้วยการโหลดข้อมูลการแสดงคำอธิบายและการแปลงพื้นฐานบางอย่าง lm()สามารถทำได้ง่ายมากและสร้างผลลัพธ์ที่พวกเขาจะเข้าใจและสามารถเปรียบเทียบกับเอาต์พุต SPSS เพื่อให้ครอบคลุมได้ดี

สำหรับการบ้านให้พวกเขาจดการแปลงกระบวนการง่ายๆหรือโหลดและสำรวจชุดข้อมูลที่คุ้นเคย ให้เวลากับพวกเขาแบบตัวต่อตัวเพื่อหาว่ามีอะไรผิดปกติจากนั้นครอบคลุมช่วงเวลาถัดไปด้วยการแปลงตัวอย่างเพิ่มเติม แนวคิดจากรายการของคุณจะเกิดขึ้นอย่างหลีกเลี่ยงไม่ได้ (การเดิมพันของฉัน: ปัจจัยเทียบกับตัวละครเวกเตอร์สำหรับกับและนำไปใช้) - แล้วคุณจะมีแรงจูงใจในโลกแห่งความเป็นจริงสำหรับครอบคลุมพวกเขา หากพวกเขายังไม่เกิดขึ้น ( attach) แสดงว่าพวกเขายังไม่ต้องการจริงๆ - ถ้านั่นหมายความว่ามือใหม่ของคุณเขียนรหัสที่ไม่ใช่สำนวนเล็ก ๆ น้อย ๆ ตั้งแต่ต้น ( forแทนapply) ฉันไม่เห็นอันตรายใด ๆ

ด้วยวิธีนี้นักเรียนของคุณสามารถก้าวหน้าได้ในลักษณะเดียวกับที่นักเรียนภาษาต่างประเทศทำ (หรืออย่างน้อยก็อย่างที่ฉันทำ): การแปลอย่างง่าย ๆ ของการแสดงออกที่เรียบง่ายทำให้เกิดความปรารถนาสำหรับการแสดงออกที่ซับซ้อนมากขึ้น ซึ่งในที่สุดก็นำไปสู่การแสดงออกที่สำนวน อย่าข้ามไปที่ "ไวยากรณ์" เร็วเกินไปและไม่ต้องกังวลมากเกินไปเกี่ยวกับการสอนสิ่งที่พวกเขาไม่ได้ถามเพราะพวกเขาอาจจะลืมมันไป พอยน์เตอร์ที่อ่อนโยนเกี่ยวกับการแสดงออกของสำนวนนั้นยอดเยี่ยม ( forvs apply) แต่สิ่งสำคัญคือให้พวกมันสร้างผลผลิตและสำรวจด้วยตัวเอง


(+1) ขอบคุณ Matt ที่ฟังดูเหมือนคำแนะนำที่ดี ฉันชอบสองย่อหน้าสุดท้ายโดยเฉพาะ
chl

ขอบคุณ Matt (และคนอื่น ๆ - ความช่วยเหลือที่ยอดเยี่ยมทั้งหมด) ฉันจะใช้ใช่มั้ย เข้าหาและให้พวกมันสร้างห้องแล็บและทำการบ้านโดยทั่วไปกับซอฟต์แวร์อื่น ๆ (SPSS และ Harmoni ซึ่งเป็นแพคเกจข้ามแท็บ) ฉันยังต้องการสิ่งที่มีเหตุผลสั่งเพียงเพื่อให้พวกเขาเปิดสิ่งที่ขึ้นและรู้ว่าจะเริ่มต้น (และฉันได้ปรับเปลี่ยนบทเรียนของฉัน 1 แผนตามลำดับ) แต่ฉันคิดว่าแรงจูงใจการเรียนรู้ด้วยตนเองนอกห้องปฏิบัติการเป็นวิธีที่แน่นอน
ปีเตอร์เอลลิส

7

ตกลงนี่คือคำตอบของฉันเองจนถึงสิ่งที่ฉันคิดว่าจะทำให้ผู้คนเริ่มต้นและกระตุ้นให้พวกเขาเรียนรู้เพิ่มเติม (ฉันพยายามหย่านมพวกเขาจาก SPSS ซึ่งแท้จริงแล้วไม่สามารถทำสิ่งที่เราต้องการเช่นการวิเคราะห์แบบสำรวจที่ซับซ้อนอย่างน้อย โดยไม่ต้องซื้อโมดูลเพิ่มเติมซึ่งฉันปฏิเสธที่จะทำ)

ในตอนท้ายของเซสชั่นแรกคุณควรจะสามารถ:

ข้อมูลพื้นฐานเกี่ยวกับ

  • ใช้อินเทอร์เฟซเพื่อทำการคำนวณที่ตรงไปตรงมา (ใช้ R เป็นเครื่องคิดเลข)
  • เริ่มบันทึกและโหลดหน้าต่างสคริปต์และใช้อย่างมีประสิทธิภาพ
  • สร้างและลบวัตถุในพื้นที่ทำงานของคุณ
  • ดูว่าโฟลเดอร์ใดเป็นโฟลเดอร์ทำงานของคุณ
  • ทำความเข้าใจวิธีการทำงานของโฟลเดอร์ P: / R / yourid และการบันทึกพื้นที่ทำงานเมื่อออก
  • โหลดภาพพื้นที่ทำงานรวมถึง XXX (ข้อมูลที่เราใช้บ่อย)
  • รายการวัตถุในหน่วยความจำ
  • แสดงรายการชื่อคอลัมน์ (ตัวแปร) ใน data frame
  • พิมพ์วัตถุไปที่หน้าจอ
  • แนบและแยกเฟรมข้อมูล
  • รู้ว่าอะไรหมายถึงอะไร: วัตถุ, ฟังก์ชั่น, อาร์กิวเมนต์ (ไปยังฟังก์ชั่น), พื้นที่ทำงาน, เวกเตอร์, กรอบข้อมูล, เมทริกซ์, ตัวเลข, ปัจจัย
  • รู้วิธีค้นหาความช่วยเหลือจากฟังก์ชั่น
  • ใช้ ?? เพื่อค้นหารายการฟังก์ชั่นที่เกี่ยวข้อง
  • จะไปที่ไหนบนเว็บและหนังสือท้องถิ่นและ LAN ของเราสำหรับแหล่งข้อมูลเพิ่มเติม
  • เข้าใจพื้นฐาน R มากพอที่จะเข้าร่วมในห้องทดลองโดยใช้เทคนิคทางสถิติที่เฉพาะเจาะจง

การจัดการข้อมูล

  • สร้างเวกเตอร์ของตัวเลขโดยใช้ตัวดำเนินการ:
  • ทำตารางการนับสำหรับหนึ่งตัวแปร
  • ทำอ้างอิงไขว้นับสำหรับสองตัวแปร
  • สร้างวัตถุใหม่ (เช่นหนึ่งในตารางด้านบน) เพื่อจัดการเพิ่มเติม
  • สลับเมทริกซ์หรือตาราง
  • สร้างเวกเตอร์ค่าเฉลี่ยของตัวแปรต่อเนื่องโดยใช้ tapply ()
  • ผูกเวกเตอร์หลาย ๆ ตัวเข้าด้วยกันโดยใช้ cbind () หรือ data.frame ()
  • สร้างเซตย่อยของเมทริกซ์โดยใช้ []
  • สร้างการแปลงอย่างง่ายเช่นลอการิทึมหรือรากที่สอง

สถิติ

  • คำนวณสหสัมพันธ์ของตัวแปรต่อเนื่องสองตัว

กราฟิก

  • สร้างฮิสโตแกรมของตัวแปรต่อเนื่อง
  • สร้างหน้าต่างกราฟิกและแบ่งออกเป็น 2 หรือ 4 ส่วน
  • สร้างพล็อตเส้นความหนาแน่นของตัวแปรต่อเนื่อง
  • สร้าง scatterplot ของตัวแปรสองตัวต่อเนื่อง
  • เพิ่มเส้นตรงไปยัง scatterplot (แนวตั้งแนวนอนหรือ ab)
  • สร้างป้ายกำกับสำหรับแกนและชื่อเรื่อง

ในตอนท้ายของสามเซสชั่นและทำแบบฝึกหัดในระหว่างนั้นคุณควรจะสามารถ:

ข้อมูลพื้นฐานเกี่ยวกับ

  • นำเข้าข้อมูลในรูปแบบ SPSS หรือ. csv
  • ลบวัตถุทั้งหมดในพื้นที่ทำงานของคุณเพื่อเริ่มต้นใหม่
  • ใช้ไลบรารีของแพคเกจ
  • บันทึกภาพพื้นที่ทำงานและเข้าใจหลักการพื้นฐาน R และหน่วยความจำ
  • สร้างตัวแปรสุ่ม
  • ใช้ c () เพื่อสร้างเวกเตอร์
  • มีความรู้สึกที่ดีสำหรับการเรียนรู้วิธีการและเทคนิคใหม่ ๆ

การจัดการข้อมูล

  • ใช้การรวม () กับชุดข้อมูลจริงเช่นจำนวนผู้เข้าชมตามเดือนและประเทศ
  • ตัวดำเนินการ ==,! = และ% ใน% เวกเตอร์เชิงตรรกะ และใช้พวกเขาเพื่อย่อยข้อมูล
  • ifelse () และใช้เพื่อสร้างตัวแปรใหม่
  • max, min และฟังก์ชั่นที่คล้ายกันและวิธีการทำงานของเวกเตอร์
  • สร้างเวกเตอร์หรือเมทริกซ์เพื่อเก็บผลลัพธ์มากมาย
  • ใช้การวนซ้ำเพื่อทำซ้ำฟังก์ชันที่คล้ายกันหลายครั้ง
  • ใช้ Apply () เพื่อใช้ฟังก์ชั่นกับแต่ละคอลัมน์หรือแถวของเมทริกซ์
  • สร้างปัจจัยสั่ง
  • ใช้ cut () เพื่อถอดรหัสตัวแปรที่เป็นตัวเลข

สถิติ

  • การทดสอบไคสแควร์สำหรับตารางฉุกเฉิน
  • เวอร์ชันสัมพันธ์ที่แข็งแกร่ง
  • พอดีตัวแบบเชิงเส้นกับตัวแปรต่อเนื่องสองตัววางผลลัพธ์ไว้ในวัตถุและใช้ anova (), summary () และ plot () เพื่อดูผลลัพธ์
  • มีความเข้าใจเพียงพอเกี่ยวกับแบบจำลองและวิธีการทำงานใน R เพื่อให้พร้อมใช้ทักษะของคุณกับประเภทแบบจำลองที่หลากหลาย
  • ใช้ boot () เพื่อดำเนินการ bootstrap บนฟังก์ชั่นพื้นฐานเช่น cor (), mean () หรือ var ()
  • ใช้ตัวอย่าง () ในชุดข้อมูลชีวิตจริง

กราฟิก

  • สร้างพล็อตเส้นความหนาแน่นของโครงตาข่ายของตัวแปรต่อเนื่องที่ให้ระดับปัจจัยที่แตกต่างกัน
  • qqnorm
  • สร้างพล็อตกระจายที่มีสีและจุดอักขระที่แตกต่างกันซึ่งแสดงระดับปัจจัยที่แตกต่างกัน เพิ่มคะแนนหรือบรรทัดลงในพล็อตกระจายที่มีอยู่
  • เพิ่มคำอธิบาย
  • dotcharts
  • errbar ()
  • ใช้การวนซ้ำเพื่อวาดแผนภูมิจำนวนมากบนหน้า

2
เมื่อพิจารณาการตั้งค่าของคุณสิ่งนี้ดูสมเหตุสมผล แต่มีหลายสิ่งที่จะครอบคลุมในหนึ่งชั่วโมงกับมือใหม่ ฉันจะเน้นย้ำถึงทรัพยากรที่พวกเขามีอยู่เพื่อสร้างความพอเพียง โดยเฉพาะให้ไปที่คู่มือ R ที่มาพร้อมกับการติดตั้งและการใช้ไฟล์ช่วยเหลือ ตัวอย่างเช่นในการแนะนำความสัมพันธ์เริ่มต้นด้วยความสัมพันธ์แสดงวิธีการค้นหารายการจากนั้นคลิกรายการและแสดงวิธีการอ่านและทำความเข้าใจความช่วยเหลือ ครสอน, hist ฯลฯจากเอกสาร ว่าสมาร์ทพวกเขาจะไม่มีขีด จำกัด ด้วยเวลาเพียงหนึ่งชั่วโมง - พวกเขาต้องเรียนรู้ที่จะได้รับข้อมูลและแก้ไขปัญหาด้วยตัวเอง
gung - Reinstate Monica

1
ฉันคิดว่าฉันทำงานประมาณ 10 นาทีในการเดินจากคุณดังนั้นให้ฉันตะโกนถ้าคุณต้องการที่จะไปอะไรมากกว่ากาแฟ :)
มิเชล

ผมไม่คิดว่ามันเป็นหลักสิ่งที่มันเป็นวิธีการที่ มันเกี่ยวกับการให้นักเรียนเรียนรู้บางสิ่งบางอย่างด้วยตัวเองและมีแผ่นโกงที่ครอบคลุมในมือ + งานบ้านบางอย่าง
Ondrej

@Michelle - ฟังดูดีส่งอีเมลมาหาฉันที่ peter.ellis [at] med.govt.nz
Peter Ellis

4
นี่คือรายการที่ท้าทายความสามารถอย่างน่าอัศจรรย์! ฉันไม่สามารถจินตนาการได้ว่าคุณครอบคลุมทั้งหมดนี้ภายในสามชั่วโมง - ฉันไม่คิดว่าฉันจะสามารถพูดคำที่ครอบคลุมทั้งหมดนี้ได้ภายในสามชั่วโมง แต่ตอบคำถามได้น้อยกว่ามาก มีแนวคิดบางอย่างที่ฉันข้ามไปทั้งหมด: เวิร์กสเปซ (ฉันไม่ต้องการใช้ - สร้างทุกอย่างจากสคริปต์ทำให้โค้ดมีความทนทานมากขึ้น), แนบ (มีปัญหาโดยเฉพาะอย่างยิ่งสำหรับผู้ใช้ใหม่ที่ไม่เข้าใจสภาพแวดล้อม), transposing เพื่อค้นหาเมื่อคุณต้องการ) และ cbind (ฉันแทบไม่เคยใช้สิ่งนี้)
Matt Parker

2

ในรายการของปีเตอร์ฉันจะเพิ่ม:

  1. เฟรมข้อมูลชุดย่อย: ชุดย่อยโดยการสังเกต (เช่นการตอบสนองทั้งหมดข้างต้น 3), ชุดย่อยโดยตัวแปร
  2. ใช้คำสั่ง ifelse (นี่เป็นกราฟการเรียนรู้ขนาดใหญ่สำหรับฉันฉันพยายามใช้ชนิดของคำสั่ง if) โดยเฉพาะ ifelse ที่ซ้อนกัน
  3. สรุปข้อมูลลงในกรอบข้อมูลที่เล็กลงโดยใช้คำสั่งรวม
  4. เรียนรู้การใช้ตัวดำเนินการ ==
  5. ใช้ <- มากกว่า =
  6. เปลี่ยนชื่อตัวแปร
  7. กับดัก vectorization ขั้นพื้นฐานเช่น max (A, B) ใน SAS ไม่ได้ทำอะไรสูงสุด (A, B) ทำใน R ถ้า A เป็นตัวแปรในกรอบข้อมูลและ B เป็นค่าเดียว ในการทำเทียบเท่ากับรหัส SAS (และอาจเป็นรหัส SPSS) ฉันจะใช้คำสั่ง ifelse
  8. ใช้กับแทนที่จะแนบ :)

คิดมากขึ้น: พวกเขาอาจจะใช้COMPUTEสิ่งต่างๆมากมายSPSSดังนั้นการปกปิดวิธีการทำสิ่งนั้นRให้ดี นอกจากนี้วิธีการRECODEตัวแปรในอาร์เมื่อฉันใช้SPSSฉันคิดว่างาน "ไม่ใช่การวิเคราะห์" ส่วนใหญ่ของฉันกำลังใช้ทั้งสองคำสั่ง


1
ดูที่ pmax ...
เอลวิส

@ ซีอานไปที่นั่นเพื่อดู (หรือกระตุ้น!) อ่าฉันไม่ได้คลิกนั่นคือคุณฉันไปที่บล็อกของคุณสองครั้งผ่านลิงก์ R-blogger :)
มิเชล

2
เมื่อครอบคลุมifelseจงแน่ใจว่าได้แสดงให้พวกเขาเห็นว่ามันทำงานอย่างไรและคำเตือนในเอกสารประกอบหมายถึงอะไร มันใช้งานได้อย่างมีเหตุผลเมื่อคุณคิดถึงมัน แต่ฉันได้เห็นความสับสนทั้งหมดเกี่ยวกับประเภทของifelse"การเปลี่ยนแปลง" ตัวแปรและทำให้เสียเวลามาก
เวย์น

2
@ ซีอาน: ความช่วยเหลือ R บอกว่า "อนุญาตให้ใช้ตัวดำเนินการ = ได้ที่ระดับบนสุดเท่านั้น (เช่นในนิพจน์ที่สมบูรณ์ที่พิมพ์ที่คอมมานด์พรอมต์) หรือเป็นหนึ่งในนิพจน์ย่อยในรายการนิพจน์ที่ถูกโยง" ฉันสามารถนึกถึงสถานการณ์อื่น ๆ นอกเหนือจากที่ระบุไว้ในบล็อกของคุณ แต่จนถึงตอนนี้มีเพียงสิ่ง C-ish เช่น: a <- 1:5 ; b <- 4 ; a[b = 3] ; b ; a[b <- 3] ; bที่ตัวห้อยให้ผลลัพธ์เหมือนกัน แต่bแตกต่างกัน (ครั้งแรกไม่มีการเปลี่ยนแปลงเปลี่ยนครั้งที่สอง) สิ่ง=นี้ไม่เคยหมายถึงการมอบหมายและควรไม่เคยมีการเปลี่ยนแปลงเพื่อพยายามทำให้ R น่ากินมากขึ้น อย่าทำมัน
เวย์น

1
@Elvis + 1,000 internets สำหรับคุณมันใช้pmaxงานได้ดี
มิเชล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.