Я хотел бы применить функцию к каждой строке фрейма данных, как показано ниже. Я знаю, как использовать применить в случае, когда фрейм данных содержит только числа, но что если строки содержат, скажем, логические / логические, строки и целые числа? Пример:
df <- data.frame(x=1:10,
y=c(TRUE, FALSE),
z=letters[1:10],
stringsAsFactors=FALSE)
RowFunction <- function(row) {
if (row$y) return(row$x)
return (row$z)
}
sapply(1:dim(df)[1], function(i) { RowFunction(df[i, ]) })
Есть ли лучший способ сделать это? Моей первой мыслью было использовать apply(df, 1, RowFunction)
после добавления row <- as.list(row)
в начало RowFunction, но это не сработало, потому что применяет принуждение df к массиву, который не может обрабатывать строки, содержащие разные типы данных.
Просто для моего знания R я хотел бы знать, есть ли более чистый способ сделать это, чем sapply(1:dim(df)[1], ... )
. Есть идеи?
Заранее спасибо!