2016-04-08 3 views
0

Мне не удалось найти решение этого непростого вопроса в R. Как применить «пользовательскую» функцию к каждому элементу (ячейке) фреймворка с выводом цикла?применить определенную пользователем функцию к каждому элементу кадра данных

func <- function(cell){ 
     if (cell==1) return("hello") 
     else return ("bye") 
    } 

Пожалуйста, не пытайтесь сказать, что вы можете заменить 1 «привет» в вашей информационной кадре. Это всего лишь пример пользовательской функции на скаляре, но мы можем применить ее к каждому элементу. Функция может составлять несколько сотен строк кода. Я попытался приклеить и использовать, но не работал. Видимо, я чего-то не хватает. Заранее спасибо.

+2

'применяются (Д.Ф., 1: 2, FUNC)' – Sotos

+0

Вы также должны взглянуть на [эту ссылку] (Http: // StackOverflow. ком/вопросы/3505701/г-группировка-функции-sapply-против-lapply-против-применить-против-tapply-против-на-против-aggrega? RQ = 1). Это очень полезно. – Sotos

+0

OMG. Спасибо. Работал! В то же время я чувствую облегчение, но глупо, что, кстати, хорошее. :) –

ответ

0

Вам нужно apply

посмотреть:

func <- function(cell){ 
    if (cell==1) return("hello") 
    else return ("bye") 
} 

df=data.frame(x=1:5,y=-2:2) 
apply(df,c(1,2),func) 

    x  y  
[1,] "hello" "bye" 
[2,] "bye" "bye" 
[3,] "bye" "bye" 
[4,] "bye" "hello" 
[5,] "bye" "bye"