합계를 구성해야하는 열 목록에서 데이터 열 하나 이상을 합산하려고합니다. 예를 들어문자 벡터를 기준으로 데이터 프레임에서 동적 열 수 만들기
:
set.seed(3550)
# Creates data frame
month <- seq.Date(from = as.Date("2012-09-01"), by = "month", length.out = 50)
a <- rpois(50, 5000)
b <- rpois(50, 3000)
c <- rpois(50, 500)
d <- rpois(50, 1000)
df <- data.frame(month, a, b, c, d)
# Creates list of vectors
mylist <- list(this = "this", that = "that", other = "other")
mylist$this <- c("a")
mylist$that <- c("a", "b")
mylist$other <- c("a", "c", "d")
나는 다음과 같은 코드를 내가 원하는 결과를 얻을 수 있습니다 :
# A tibble: 50 x 4
month this that other
<date> <int> <int> <int>
1 2012-09-01 4958 7858 6480
2 2012-10-01 4969 7915 6497
3 2012-11-01 5012 7978 6483
4 2012-12-01 4982 7881 6460
5 2013-01-01 4838 7880 6346
6 2013-02-01 5090 8089 6589
7 2013-03-01 5013 8044 6582
8 2013-04-01 4947 7942 6388
9 2013-05-01 5065 8124 6506
10 2013-06-01 5020 8086 6521
# ... with 40 more rows
내가하려고 문제로 실행 : 출력 존재와
my_df <- df %>%
group_by(month) %>%
summarize(this = sum(!!!rlang::syms(mylist$this), na.rm = TRUE),
that = sum(!!!rlang::syms(mylist$that), na.rm = TRUE),
other = sum(!!!rlang::syms(mylist$other), na.rm = TRUE))
을 요약 된 컬럼의 수를 동적으로 작성하는 f}을 이해할 수 있습니다. 나는 요약 호출 내에서 루핑이 작동한다고 생각했지만 그렇지 않았다.
combine_iterations <- function(x, iter_list){
a <- rlang::syms(names(iter_list))
b <- x %>%
group_by(month) %>%
summarize(for (i in 1:length(a)){
a[[i]] = sum(!!!rlang::syms(iter_list[i]), na.rm = TRUE)
})
}
출력 :
Error in lapply(.x, .f, ...) : object 'i' not found
Called from: lapply(.x, .f, ...)
것에 세상은'!!!'인가? –
@KyleWeise 표준 평가 기능이 더 이상 사용되지 않을 때 dplyr에 추가 된 견적/인용 취소 정비사의 일부입니다. 특히 그것은 따옴표로 묶지 않은 스플 라이스입니다. –