주어진 함수의 기본값을로드하는 함수를 R에서 만들려고합니다. 이렇게하려면 함수에 대해 args
인수를 사용하고 있으며 함수의 기본 인수로 나누고이를 전역 환경에로드하려고합니다. 이것은 약간의 정규 표현식을 필요로하며 이에 부딪혀 주소 지정이 어려워졌습니다. 여기 정규식 쉼표를 선택하지만 괄호 사이에 없음
myFunc <- function(a = 1, b = "hello world", c = c("Hello", "World")) {}
그러나
x <- "a = 1, b = \"hello world\", c = c(\"Hello\", \"World\")"
, 내가 함수 인수를 분할에 어려움을 겪고 있어요 쪽으로. 나는 쉼표로 분리하고 싶었지만, 디폴트 (예 : c
인수와 같은)의 쉼표가있는 함수 인수가있는 경우 문제가 발생합니다. 내가 생각하는 것은 괄호 사이에 쉼표가 아닌 쉼표와 일치하는 정규 표현식을 호출하는 방법이있는 경우 해당 표현과 함께 strsplit
을 사용하여 원하는 것을 얻을 수 있다는 것입니다.
: 이제
\\(.*,.*\\)
, 나는 내가 위에서 설명한 일을하는 방법을 검토 한 결과 그것은 앞서 부정적인 모습이 비슷한 것 같다 내가 필요한 것, 그래서 나는 이런 식으로하려고했습니다.
splitx <- strsplit(x, "(?!\\(.*,.*\\)(,)")
그러나 R은 그것이 불법적 인 정규식이라고 알려줍니다. 인수에 perl = TRUE
을 설정하면 동일한 문자열 만 반환됩니다. 어떤 도움이라도 대단히 감사 할 것입니다. 그리고 나는 분명히했기를 바랍니다!
PCRE regex를 사용하면 다른 것들과 매치되는 것을 쉽게 할 수 있습니다 - ['strsplit (x, "\\ ([^]) + \\) (* SKIP) (* F) |,", perl = TRUE)'] (http://ideone.com/Cw6U5n). 그러나 여기에서 정규 표현식을 사용하여 눈먼 골목으로 향하지 않도록하십시오. –
귀하의 질문은 귀하가 직면 한 문제보다 훨씬 광범위합니다. 'match.call()'이 목표에 더 빨리 도달 할 수 있다고 제안한다면 나는 짧게자를 것인가? –
일부 검색은 자세한 내용을 찾을 수 있지만 여기에서 시작할 수 있습니다 : http://stackoverflow.com/questions/14397364/match-call-with-default-arguments –