Ошибка в is.data.frame (x): объект list не может быть приведен к типу double - PullRequest
0 голосов
/ 02 мая 2020

Я написал эту функцию, чтобы найти корреляцию между 2 переменными в переменных Var1-Var8. Но когда я запускаю эту функцию, она дает мне эту ошибку, и я не знаю, что делать, чтобы решить эту проблему. Я новичок в программировании R, так что если вы ответите более подробно, я буду рад. Уже спасибо

findCorrelation=function(df){

  print("which variables do you want to see the Correlation between ?")
  x=readline("Enter the first variable :")
  y=readline("Enter the second variable :")

  cp = sum((df[x] * df[y]),na.rm=T) - (sum(df[x],na.rm=T)*sum(df[y],na.rm=T)/length(df[y]))
  covariance=cp/99


  correlation=covariance/(sd(df[x],na.rm = T)*sd(df[y],na.rm=T))

  print(paste("Correlation betwen variable ",x,"and variable",y,"is",correlation))

}

1 Ответ

1 голос
/ 02 мая 2020

это как-то связано со ссылками на элементы во фрейме данных. Одна скобка df[x] возвращает список. df[[x]] возвращает атоми c вектор двойников. Некоторые функции не могут работать со списками, только с атомами c векторов.

Измените выражение на следующее:

correlation <- covariance/(sd(df[[x]],na.rm = T)*sd(df[[y]],na.rm=T))

, и оно должно работать. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...