Мне нужно рассчитать индекс для нескольких списков.Тем не менее, я могу сделать это только в том случае, если я опущу некоторые столбцы (здесь они обозначены буквой "w" и "x").Например,
library(tidyverse)
lists<- list(
l1=tribble(
~w, ~x, ~y, ~z,
#--|--|--|----
12, "a", 2, 1,
12, "a",5, 3,
12, "a",6, 2),
l2=tribble(
~w, ~x, ~y, ~z,
#--|--|--|----
13,"b", 5, 7,
13,"b", 4, 6,
13,"b", 3, 2))
lists %>%
map(~ .x %>%
#group_by(w,x) %>%
select(-w,-x) %>%
mutate(row_sums = rowSums(.)))
Вместо того, чтобы отбрасывать эти столбцы, я хотел бы сохранить / опустить их и рассчитать индекс только для "y" и "z".
Я управляючтобы сделать это, сначала извлекая эти столбцы и затем связывая их снова.Например,
select.col<-lists %>%
map_dfr(~ .x %>%
select(w,x))
lists %>%
map_dfr(~ .x %>%
select(-w,-x) %>%
mutate(row_sums = rowSums(.))) %>%
bind_cols(select.col)
Однако это не так уж и элегантно, и мне пришлось связать списки (map_dfr
), хотя я хотел бы сохранить их в виде списка.
Вероятно,другим подходом было бы использовать select_if(., is.numeric)
, но так как у меня есть несколько числовых столбцов, которые я должен опустить, я не уверен, является ли это лучшим вариантом.
Я уверен, что есть простое решениек этой проблеме.Кто-нибудь может взглянуть на это?