assign
เป็นสิ่งที่ดี แต่ฉันไม่พบฟังก์ชันสำหรับอ้างอิงกลับไปยังตัวแปรที่คุณสร้างขึ้นในสคริปต์อัตโนมัติ ( as.name
ดูเหมือนจะทำงานในทางตรงกันข้าม) ผู้เขียนโค้ดที่มีประสบการณ์มากกว่าจะมีทางออกที่ดีกว่าอย่างไม่ต้องสงสัย แต่โซลูชันนี้ใช้งานได้และอาจมีอารมณ์ขันเล็กน้อยเนื่องจากได้รับ R เพื่อเขียนโค้ดเพื่อดำเนินการเอง
สมมติว่าฉันเพิ่งกำหนดค่า 5 ให้กับx
( var.name <- "x"; assign(var.name, 5)
) และฉันต้องการเปลี่ยนค่าเป็น 6 ถ้าฉันเขียนสคริปต์และไม่รู้ล่วงหน้าว่าชื่อตัวแปร ( var.name
) จะเป็นอย่างไร (ซึ่งดูเหมือนจะเป็นจุดของassign
ฟังก์ชั่น) ผมไม่สามารถเพียงแค่ใส่x <- 6
เพราะอาจได้รับvar.name
"y"
ดังนั้นฉันจึง:
var.name <- "x"
assign(var.name, 5)
write(paste0(var.name, " <- 6"), "tmp.R")
source("tmp.R")
file.remove("tmp.R")
x
จะเปลี่ยนเป็น 6 และหากชื่อตัวแปรเป็นชื่ออื่นนอกเหนือจาก"x"
นั้นตัวแปรนั้นจะถูกเปลี่ยนเป็น 6 ในทำนองเดียวกัน