Tibble을 함수 호출을위한 매개 변수 목록으로 변환하려고합니다. 내가이 일을하는 이유는 여러 열로 여러 개의 고정 너비 파일을 읽는 간단한 파일 사양 Tibble을 만들고 싶기 때문입니다. 이 방법은 pull과 select를 사용하여 파일에있는 열만 지정하면 파일을 자동으로로드하고 파싱 할 수 있습니다. 그러나 cols 개체를 사용하여 열 형식을 지정하는 데 문제가 있습니다. 다른 질문에서Tibble을 매개 변수 목록으로 변환
> (cols(Title = col_character(), Date = col_date(), ATTR=col_factor(levels=c(123456,654321))))
cols(
Title = col_character(),
Date = col_date(format = ""),
ATTR = col_factor(levels = c(123456, 654321), ordered = FALSE)
)
내가 읽고 :
> (filespec <- tibble(ID = c("Title", "Date", "ATTR"), Length = c(23, 8, 6), Type = c("col_character()", "col_date()", "col_factor(levels=c(123456,654321)")))
# A tibble: 3 x 3
ID Length Type
<chr> <dbl> <chr>
1 Title 23 col_character()
2 Date 8 col_date()
3 ATTR 6 col_factor(levels=c(123456,654321)
내가 형식의 COLS 객체와 끝까지하려는 :이 예를 들어
내가 형식의 Tibble가 있다고 가정 할 수 있습니다 do.call로이 작업을 수행 할 수 있다는 것을 알고 있습니다. 그러나 컬럼 ID와 Type을 자동화 된 방식으로 cols 객체로 변환하는 방법을 알 수는 없습니다. 여기 는> do.call(cols, select(filespec,ID, Type))
Error in switch(x, `_` = , `-` = col_skip(), `?` = col_guess(), c = col_character(), :
EXPR must be a length 1 vector
는 내가 매핑을 매개 변수 행을 수행하는 다른 기능을 포장 할 수있는 선택의 요구를 가정하고
, 어떻게이
을 수행 ... 내가 뭘하려의 예입니다?
당신은'do.call'을 사용하여이 일을 할 수도 있지만, 여러분의 코드는 원격지에서 여러분이 원하는대로 행동하지 않습니다 - 먼저 do.call이 실제로 무엇을하는지 먼저 이해해야합니다 그것을 사용할 수 있습니다. –
저는 R에 익숙하지 않습니다. 그래서 이것은 모든 학습 경험입니다. 나는 do.call이하는 일을 이해하고 있다고 생각합니다. 다른 매개 변수를 인수로 사용하여 함수를 호출합니다. 아래 답변에 대한 내 의견에 따라 나는 여기에서 나를 도피하는 것이 자동화 된 방식으로 명명 된 목록을 만드는 방법이라고 생각합니다. 필자는 모든 field = type 매개 변수를 직접 손으로 입력하지 않아도되고, 두 개의 열이 있는데, R이 나를 위해 명명 된 목록을 만들길 원합니다. – RandomString
예, 실제로 문제 설명에 집중하고 있습니다. 당신의 질문에서 당신이 이걸 이해 한 것처럼 보이지 않았습니다. 그러나 문제의이 부분은 실제로'setNames'를 사용하여 쉽게 해결할 수 있습니다. 또 다른 큰 문제는 매개 변수가 코드가 아니라 문자열이라는 것입니다. 따라서 먼저 평가할 필요가 있으며 가능한 경우 (구문 분석/평가를 통해) 가능하지만 지저분하고 어쩌면 좋은 아이디어로 시작하지 않을 수도 있습니다 (경우에 따라 다를 수 있음). 조란의 접근 방식이 우수합니다. –