Trong .Rprofile của tôi, tôi đã hai dòng sau đây được định nghĩa trong tôi .First
bảng data.table() chức năng chạy một số chức năng .Rprofile tôi
makeActiveBinding(".refresh", function() { system("R"); q("no") }, .GlobalEnv)
makeActiveBinding('.rm', function() {rm(list=ls(envir = .GlobalEnv),envir=.GlobalEnv); gc()}, .GlobalEnv)
Họ thường vô hại, trừ khi tôi gõ chúng một cách tình cờ ! Đầu tiên tạo một hàm .refresh
sẽ thoát và khởi động lại phiên R. Cái thứ hai làm trống môi trường toàn cầu. Tuy nhiên, khi sử dụng chức năng tables()
từ data.table
hai chức năng này đang chạy không chính xác mong muốn.
Hiện tại, tôi đã xóa chúng khỏi số .First
nhưng tôi tò mò nếu có cách nào để tránh điều này. Các đường vi phạm trong hàm tables()
là:
tt = objects(envir = env, all.names = TRUE)
ss = which(as.logical(sapply(tt, function(x) is.data.table(get(x,
envir = env)))))
đó là cách tôi đã viết cho họ ban đầu, nhưng những ngón tay của tôi đã quá mệt mỏi từ gõ '()' mà tôi quyết định chơi với lửa ... – Justin
Đủ công bằng. Nếu bạn cố gắng giữ cho ngọn lửa đó đang diễn ra, theo thời gian, nó sẽ khiến bạn mất nhiều chi phí;) –
Không có cách nào để kiểm tra môi trường hiện tại t, hoặc một tham số cho biết "đây là một môi trường tương tác ...", và làm cho các chức năng của bạn sử dụng thông tin đó để quyết định có thực hiện hay không? –