Как пройти по циклу данных и подсчитать количество вхождений разных строк и добавить их счетчики в другие столбцы - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь создать набор функций, которые могут создавать таблицы, содержащие все комбинации различных 8-сторонних игровых кубиков.Моя функция создает фрейм данных со всеми этими комбинациями со столбцами, содержащими символы.

Теперь я хочу сделать что-то вроде этого:

Проходить по каждой строке и каждый раз, когда я нахожу определенный символ, добавить1 к соответствующему новому столбцу.

Я попытался написать функцию для этого и использовать функции применения, но я новичок в R и не смог выполнить эту работу.

Это код, который я использую для создания фрейма данных.

createDiceTable <- function(redDice=0,blackDice=0,blueDice=0){
red <- as.data.frame(c("Blank","Blank","Crit","Crit","Hit","Hit","Accuracy","HitHit"))
black <- as.data.frame(c("Blank","Blank","Hit","Hit","Hit","Hit","HitCrit","HitCrit"))
blue <- as.data.frame(c("Hit","Hit","Hit","Hit","Crit","Crit","Accuracy","Accuracy"))

result <- as.data.frame(expand.grid(c(replicate(redDice,red),replicate(blackDice,black),replicate(blueDice,blue))))

convertDice(result)
}
convert

convertDice <- function(df){
  df[,"Damage"] <- NA
  df[,"Accuracies"] <- NA
  df[,"Crits"] <- NA
  return(df)
}

Я пробовал этот код для функции, применяемой к фрейму данных, который должен подсчитывать количество кубиков, бросивших «Hit» в «Damage»-column

damageFunc <- function(x){if(x=="Hit") append(df["Damage"],1)}

Я пытался применить его так:

sapply(testdice,damageFunc)
...