ตัวแปรทั่วโลกใน R


คำตอบ:


174

ในฐานะที่เป็นคำตอบของคริสเตียนกับassign()รายการมีวิธีที่จะกำหนดในสภาพแวดล้อมระดับโลก วิธีที่ง่ายกว่าสั้นกว่า (แต่ไม่ดีกว่า ... ติดกับการมอบหมาย) คือการใช้ตัว<<-ดำเนินการคือ

    a <<- "new" 

ภายในฟังก์ชั่น


41
วิธีการนี้จริงไม่ได้บันทึกในสภาพแวดล้อมส่วนกลาง แต่จะอยู่ในขอบเขตหลัก บางครั้งขอบเขตของพาเรนต์จะเหมือนกับสภาพแวดล้อมทั่วโลก แต่ในบางกรณีที่มีฟังก์ชั่นซ้อนอยู่มากมายก็จะไม่เกิดขึ้น
LunaticSoul

5
ทำไมassignต้องการให้<<-?
Jasha

4
@Jasha <<-จะค้นหาเชนของสิ่งที่แนบมากับสภาพแวดล้อมโกลบอลและกำหนดให้กับตัวแปรที่ตรงกันตัวแรกที่พบ สมมุติฐานถ้าคุณมีฟังก์ชั่นที่f()ซ้อนกันในการปิดg()และaมีอยู่g()แล้วการใช้a <<-ในf()จะได้รับมอบหมายให้aในg()ไม่ได้อยู่ในสภาพแวดล้อมระดับโลก บ่อยครั้งนี่คือสิ่งที่คุณต้องการอย่างไรก็ตาม
Bob

93

ฉันพบโซลูชันสำหรับวิธีตั้งค่าตัวแปรส่วนกลางในรายการส่งเมลผ่านการกำหนด :

a <- "old"
test <- function () {
   assign("a", "new", envir = .GlobalEnv)
}
test()
a  # display the new value

1
ดูคำตอบที่ได้รับการยอมรับของโพสต์นี้: stackoverflow.com/questions/3969852/ …สำหรับการอัปเดต dataframes ภายในฟังก์ชั่น
user1420372
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.