ฉันอยากจะถามชุมชน: เราจะตั้งค่าตัวแปรทั่วโลกในฟังก์ชั่นได้อย่างไร?
ฉันอยากจะถามชุมชน: เราจะตั้งค่าตัวแปรทั่วโลกในฟังก์ชั่นได้อย่างไร?
คำตอบ:
ในฐานะที่เป็นคำตอบของคริสเตียนกับassign()รายการมีวิธีที่จะกำหนดในสภาพแวดล้อมระดับโลก วิธีที่ง่ายกว่าสั้นกว่า (แต่ไม่ดีกว่า ... ติดกับการมอบหมาย) คือการใช้ตัว<<-ดำเนินการคือ
a <<- "new"
ภายในฟังก์ชั่น
assignต้องการให้<<-?
<<-จะค้นหาเชนของสิ่งที่แนบมากับสภาพแวดล้อมโกลบอลและกำหนดให้กับตัวแปรที่ตรงกันตัวแรกที่พบ สมมุติฐานถ้าคุณมีฟังก์ชั่นที่f()ซ้อนกันในการปิดg()และaมีอยู่g()แล้วการใช้a <<-ในf()จะได้รับมอบหมายให้aในg()ไม่ได้อยู่ในสภาพแวดล้อมระดับโลก บ่อยครั้งนี่คือสิ่งที่คุณต้องการอย่างไรก็ตาม
ฉันพบโซลูชันสำหรับวิธีตั้งค่าตัวแปรส่วนกลางในรายการส่งเมลผ่านการกำหนด :
a <- "old"
test <- function () {
assign("a", "new", envir = .GlobalEnv)
}
test()
a # display the new value