Я хочу оценить показатели значений, распределенных отдельно от диагонали подряд.Однако я не смог заставить свою функцию работать.
Итак, гипотетические данные выглядят так:
tree = data.frame(Oak = c(10,1,3), Pine = c(2,15,1), Maple = c(1,1,20),
+ row.names = c("Oak","Pine","Maple"))
> tree
Oak Pine Maple
Oak 10 2 1
Pine 1 15 1
Maple 3 1 20
Допустим, для Дуба я хочу получить значение: (2 + 1)/ (10 + 2 + 1) = 0,2308, который «принимает значения, в которых имя строки и имя столбца не совпадают» / «сумма строки»
И я также хочу повторить эту операциюдля всех столбцов.Я подумал, что записать функцию, особенно для больших реальных наборов данных, было бы лучше.
Так что я пришел к этой функции:
miss.rate = function(data) {
rate.x = sum(data[(data["i",] != data[,"i"]),])/
(sum(data["i",]))
data.frame(tree = "i", rate = rate.x)
}
Однако она не работала, поскольку яожидаемый, и я не понимаю, где это идет не так.
Мой ожидаемый результат для функции был:
tree rate
Oak 0.2308
Pine 0.1176
Maple 0.1667
Предложения были бы хорошими?