this 및 that을 이미 보았지만 여전히 문제를 해결할 수는 없습니다. 붙여 넣기 및 대용 기호를 인용 부호와 함께 사용하여 R
는 최소한의 작업 예제를 가정 : 여기a <- c(1,2,3)
b <- c(2,3,4)
c <- c(4,5,6)
dftest <- data.frame(a,b,c)
foo <- function(x, y, data = data) {
data[, c("x","y")]
}
foo(a, b, data = dftest)
이, 마지막 줄은 분명히 Error: undefined columns selected
반환합니다. 선택한 열이 x
및 y
이고 데이터 프레임 dftest
의 일부가 아니기 때문에이 오류가 반환됩니다.
질문 : 어떻게 내가 기능 foo
를 호출하여 가져올
> dftest[, c("a","b")]
# a b
# 1 1 2
# 2 2 3
# 3 3 4
입니다 원하는 출력을 얻기 위해 함수의 정의를 수립 할 필요가있다.
솔루션을 내 용도로 유용하게 사용하려면 foo
의 함수 호출 형식을 고정 된 것으로 간주해야합니다. 즉, 함수 자체 만 변경해야합니다. 호출. 나는. foo(a, b, data = dftest)
이 허용되는 유일한 입력입니다.
접근 : 내가 먼저 함수 호출의 인수를 사용하여 x
및 y
를 교체 한 후 전화를 평가하기 위해 eval
와 함께 paste
및 substitute
을 사용했습니다. 여기
foo <- function(x, y, data = data) {
substitute(data[, paste("c(\"",x,"\",\"",y,"\")", sep = "")])
}
foo(a, b, data = dftest)
eval(foo(a, b, data = dftest))
, foo(a, b, data = dftest)
반환 : 그러나, 인용 부호를 이스케이프하는 것은 여기에 문제가 될 것 같다, 그러나
dftest[, paste("c(\"", a, "\",\"", b, "\")", sep = "")]
(단지 paste
부분에 초점) eval()
으로 평가
paste("c(\"", a, "\",\"", b, "\")", sep = "")
아니, 내가 희망하는대로 c("a","b")
, 다시 위와 같은 오류가 발생합니다.
당신을 감사합니다! 매일 R에서 발견 할 수있는 새로운 기능이 있습니다! 그래도 1 시간 동안 해결하려고하는 질문에 대해 몇 분 안에 대답을 얻을 때 약간의 실망감을 느낄 수 있습니다./ – iraserd
@rawr, 그 옵션을 사용해 보셨습니까? – A5C1D2H2I1M1N2O1R2T1
예, 나는 foo를 grothe의 foo로 이미 대체했다고 생각합니다. – rawr