Я пытаюсь использовать lapply в списке подсписков.Однако все, что я могу сделать, это переписать подсписки с тем, что должно входить в них, а не записывать в подсписки.
Чтобы прояснить мою проблему до точки скуки, это было бы то же самое, что иметь 'Список магазинов », с« DIY Store »и« Gardening Store ».Попытка вписать «Молоток и гвозди» в подсписок «Сделай сам» и «Семена» в подсписок «Садоводство», но понимая, что ты на самом деле нацарапал все свои предметы в «Список покупок», уничтожив свои подсписки.
Я думаю, что естьпростой способ сказать R: "Ого, просто рекурсивно посмотри на мой первый слой подсписков".В надежде, что это простое исправление, а более широкий контекст не слишком полезен, мой приятный раздел и то, где я думаю, что изменения должны быть сделаны, чуть ниже.
# Create a list of Types and the matrices
StatMatrices <- lapply(Types, function(q) {
# Select Versus List so that for example, a HESH list only contains HESHVersusHEAT<
# HESHVerusHESH, HESHVersusAPDS and HESHVersusAPDR, and not HEATVersus.. and so on...
WhichVersus <- grep(paste0("(^", q, ")"), VersusList, value = T, perl = T)
EmptySublist <- (setNames(vector("list", length(Types)), WhichVersus))
})
names(StatMatrices) <- Types
Теперь я попробовалнекоторые вещи, такие как удвоение lapply
, но я даже не уверен, что делаю это правильно, не говоря уже о том, чтобы найти правильное решение.
# Create a list of Types and the matrices
StatMatrices <- lapply(Types,
lapply, function(q) {
# Select Versus List so that for example, a HESH list only contains HESHVersusHEAT<
# HESHVerusHESH, HESHVersusAPDS and HESHVersusAPDR, and not HEATVersus.. and so on...
WhichVersus <- grep(paste0("(^", q, ")"), VersusList, value = T, perl = T)
EmptySublist <- (setNames(vector("list", length(Types)), WhichVersus))
})
names(StatMatrices) <- Types
Мой полный код показан ниже.Я пытался это прокомментировать, но по сути у меня есть 4 «Типа», и я создаю списки с именем StatMatrices
.Это будет содержать дополнительные списки, следующий слой будет состоять из имен, таких как, например, VelStatMatrices
, имена в соответствии с последующей информацией, которая будет храниться в них.Следующим набором списков будут так называемые типы (например, HEAT
, HESH
, APDS
и APCR
).Они будут содержать матрицы сравнения, хотя на данный момент это только названия местозаполнителей.Таким образом, внутри HESH
вы будете иметь HESHVersusHEAT
HESHVerusHESH
, HESHVersusAPDS
и HESHVersusAPDR
, ожидающие заполнения матрицы.
Окончательный путь к списку будет выглядеть примерно так:
StatMatrices[["VelStatMatrices"]][[HESH]][[HESHVerusHEAT]]
и другой подобный
StatMatrices[["PenStatMatrices"]][["APDS"]][["APDSVerusHESH"]]
Вот что у меня так далеко:
#Mun Types
Types = c("HEAT", "HESH", "APDS", "APCR")
#Create empty vector for Versus name strings
VersusList <- c()
#Create Versus names e.g. HEATVerusAPDS and APCRVersusHESH etc
for (q in 1:length(Types)) {
for (j in 1:length(Types)) {
# VersusList(i) <- paste0(Types[q], "Versus", Types[j])
VersusList <- c(VersusList, paste0(Types[q], "Versus", Types[j]))
}
}
#Create List of lists of stat matrices, each to be filled with matrices,
StatMatrices <- list("PenStatMatrices", "DmgStatMatrices", "VelStatMatrices")
# Create a list of Types and the matrices
StatMatrices <- lapply(Types, function(q) {
# Select Versus List so that for example, a HESH list only contains HESHVersusHEAT<
# HESHVerusHESH, HESHVersusAPDS and HESHVersusAPDR, and not HEATVersus.. and so on...
WhichVersus <- grep(paste0("(^", q, ")"), VersusList, value = T, perl = T)
EmptySublist <- (setNames(vector("list", length(Types)), WhichVersus))
})
names(StatMatrices) <- Types
Я только начинаю использовать lapply и почти не знаю, что делаю с R, поэтому любая помощь будет принята.