연결된 문자열을 만들어 함수에 전달하려고합니다. 함수에 전달할 수있는 데이터 프레임 목록을 만들고 싶다고 가정 해 보겠습니다. 문제는 "noquote"함수를 사용하여 연결된 문자열이 원하는 목록이 아닌 "noquote"개체로 취급된다는 것입니다. 다음은 재현 가능한 예입니다. 를 사용하여 데이터를 정의하면 data <- dflist1
원하는 것을 얻지 만을 시도 data1 <- noquote(paste0("dflist", selection))
하면 동일한 목록이 반환되지 않습니다.
변경만으로 원하는대로 목록을 만들 수있는 방법이 selection
있습니까?
내가 직면 한 실제 문제에는 이런 식으로 변경해야하는 여러 함수 인수가 있으므로이 트릭을 수행하는 방법을 배우는 것이 매우 도움이 될 것입니다.
어떤 의견이라도 대단히 감사하겠습니다!
a <- data.frame(aa = c(1,2,3), bb = c(4,5,6))
b <- data.frame(cc = c(11,12,13), dd = c(41,51,61))
dflist1 <- list(a, b)
dflist2 <- list(a, b, a, b)
selection <- "1" # I want to make a choice here
data <- dflist1
data1 <- noquote(paste0("dflist", selection))
print(data1)
[1] dflist1
print(data)
[[1]]
aa bb
1 1 4
2 2 5
3 3 6
[[2]]
cc dd
1 11 41
2 12 51
3 13 61
class(data)
[1] "list"
class(data1)
[1] "noquote"
get
값을 반환하는 데 사용할 수 있습니다.
get(data1)
#[[1]]
# aa bb
#1 1 4
#2 2 5
#3 3 6
#[[2]]
# cc dd
#1 11 41
#2 12 51
#3 13 61
를 확인하면 str(data1)
"문자"위에class
noquote
str(data1)
#'noquote' chr "dflist1"
class(data1)
#[1] "noquote"
속성을 변경하여
noquote
#function (obj, right = FALSE)
#{
# if (!inherits(obj, "noquote"))
# class(obj) <- c(attr(obj, "class"), if (right) c(right = "noquote") else "noquote")
# obj
#}
는 paste0
문자열로 개체 이름을 반환하고 사용할 필요가 없습니다 noquote
. 간단히 포장하면 get
그 값을 반환 list
하거나 mget
여러 개체가있는 경우 사용 합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다