제목이 약간 느슨합니다. 목록 이름을 변수로 사용하고 해당 목록에 요소를 할당하는 함수를 만들고 싶습니다. 지금까지 my_fun
함수 의 이름을 통해 목록의 요소에 액세스 할 수 있습니다 . 그런 다음 함수 매개 변수를 사용하여 함수 내 목록을 수정 print
하고 할당이 작동했는지 확인할 수 있습니다. 물론이 모든 것을 글로벌 환경에 저장하는 것은 아니므로 함수 외부에서 목록을 호출 할 때 변경되지 않았습니다.
my_list <- list('original_element')
my_fun <- function(some_list) {
# check that I can access the list using the parameter name
print(some_list[[1]])
# modify the list
some_list[[1]] <- 'element_assigned_in_function'
# check that the list was modified
print(some_list[[1]])
}
my_fun(my_list)
# [1] "original_element"
# [1] "element_assigned_in_function"
# of course, my_list hasn't been modified in the global environment
my_list
# [[1]]
# [1] "original_element"
내 질문은 함수 내에서이 목록에 새 요소를 할당하고 전역 환경에 저장할 수있는 방법입니다. 단순히 할당을 전역으로 만들려고 <<-
하면 다음 오류가 발생합니다.
some_list [[1]] <<- "element_assigned_in_function"오류 : 'some_list'개체를 찾을 수 없음
나는 사용 assign
하고 설정 하려고 시도했지만 envir = .GlobalEnv
작동하지 않으며 assign
목록 요소와 함께 사용할 수 없다고 생각 합니다. 나는 이것을 작동시키기 위해 인용 / 인용 해제 / 표현 사용이있을 수 있다고 생각하지만 그것을 알아낼 수 없었습니다. 감사합니다.
우선, 전역 환경에서 함수 내부에서 변수에 값을 할당하는 것을 권장하지 않는다는 점을 분명히 할 것입니다. 이상적으로는 항상 return
변경하려는 함수의 값 을 가져야합니다 . 그러나 데모 목적으로 여기에 함수 내부에서 목록의 내용을 변경할 수있는 방법이 있습니다.
my_fun <- function(some_list) {
list_name <- deparse(substitute(some_list))
some_list[[1]] <- 'element_assigned_in_function'
assign(list_name, some_list, .GlobalEnv)
}
my_list <- list('original_element')
my_fun(my_list)
my_list
#[[1]]
#[1] "element_assigned_in_function"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다