ฉันอยากจะถามชุมชน: เราจะตั้งค่าตัวแปรทั่วโลกในฟังก์ชั่นได้อย่างไร?
ฉันอยากจะถามชุมชน: เราจะตั้งค่าตัวแปรทั่วโลกในฟังก์ชั่นได้อย่างไร?
คำตอบ:
ในฐานะที่เป็นคำตอบของคริสเตียนกับ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