2016-12-07 3 views
0
data <- data.frame(A = c(1:4), B = c(10:13), C = c(19:22)) 

Я хотел бы вычислить 1/A + 1/C строку мудрИспользование применяются: Неверное количество размеров

df$calc <- apply(data, 2, function(x) sum(1/x[,c(1,3)]) 

Error in x[, c(1, 3)] : incorrect number of dimensions 

Я не понимаю, почему я должен получить ошибку здесь когда

fun<- function(x){ 

f <- sum(1/x[,c(1,3)]) 
return(f) 
} 

fun(data[1,]) 
1.052632 

Работает без проблем

+0

ли вы имели в виду 'применяются (данные, 2, функция (х) сумма (1/x [c (1,3)])) ' – akrun

+0

Или это' 1/data [["A"]] + 1/data [["C"]] ' – akrun

ответ

0

Мы можем сделать rowSums как это векторизация

data$calc <- rowSums(1/data[c("A", "C")]) 

Или другой эффективный вариант

Reduce(`+`, 1/data[c("A", "C")]) 
+1

Спасибо всем. Усталые глаза... – Jixxi

0

Я считаю

df <- apply(data, 1, function(x) sum(1/x[c(1,3)])) является то, что вы хотите