Я пытаюсь применить оператор ifelse ко всем ячейкам в моем фрейме данных. Я почти уверен, что обдумываю это, но был бы признателен за некоторую помощь / руководство!
У меня есть данные (слегка измененный) процент растительного покрова от ряда участков, где названия участков и типы растительности являются имена строк и столбцов соответственно (ie. фрейм данных должен состоять только из цифр c значений):
dwarf shrub equisetum forb fungi graminoid lichen moss shrub-forb tall shrub tree
site1 33.25 0 21.25 1.0 35.25 3.25 60.00 0.00 34.25 0.25
site2 30.25 0 15.00 0.0 25.75 7.50 62.25 1.50 26.75 0
site3 50.00 0 10.00 0.5 23.50 3.25 65.00 6.75 18.50 0
site4 46.00 0 7.75 0.0 32.75 2.25 33.75 4.50 11.25 0.75
site5 28.00 0 11.00 0.0 40.00 6.00 30.00 0.00 38.00 0
site6 40.25 0 10.50 0.0 5.75 6.25 7.25 3.25 8.75 1.25
Я пытаюсь округлить числа до ближайшего целого числа, чтобы функция round () используется, когда значение больше 1, а функция floor () используется, когда значение меньше 1.
Вот код, который я написал, чтобы попытаться сделать это:
new.df <- if(old.df > 1){
round(old.df, digits = 0)} else{
ceiling(old.df)
}
Я также пробовал без функции потолка:
new.df <- if(old.df > 1){
round(old.df, digits = 0)} else{
old.df == 1
}
Мне не удалось применить вторую половину утверждения (потолок ()). Я получаю эту ошибку:
Warning message:
In if (old.df > 1) { :
the condition has length > 1 and only the first element will be used
Любая помощь будет высоко ценится, спасибо!