Я новичок в R. И я хочу написать функцию, которая генерирует два вектора в R^2 И эта функция делает следующее : 1. Он принимает эти два вектора R^2 как два аргумента. 2.It вычисляет расстояние и угол между двумя векторами. 3.It проектирует первый вектор на второй вектор. 4.Посмотрите результат проецирования.Очень простой R - Я хочу написать функцию, которая генерирует два вектора в R^2
Я пробовал коды:
x <- function(x)
y <- function(y)
distance <- (sqrt(sum(x*x))*sqrt(sum(y*y)))
theta <- -acos(sum(x*x)/distance)
proj <- (x%*%y)/norm(y)%*%y
if (length(x)==2 & length (y) ==2)
{ print(distance) &
print(theta) &
print(proj)
}else {
print("Not R^2 vectors")
}
И я получил сообщение об ошибке:
> x <- function(x)
+ y <- function(y)
+ distance <- (sqrt(sum(x*x))*sqrt(sum(y*y)))
> theta <- -acos(sum(x*x)/distance)
**Error in x * x : non-numeric argument to binary operator**
> proj <- (x%*%y)/norm(y)%*%y
**Error: object 'y' not found**
> if (length(x)==2 & length (y) ==2)
+ { print(distance) &
+ print(theta) &
+ print(proj)
+
+ }else {
+ print("Not R^2 vectors")
+ }
**Error: object 'y' not found**
Я пытался исправить мой код в течение нескольких часов, и он до сих пор не работает. Кроме того, я не знаю, какую команду использовать для визуализации результата проецирования. Может ли кто-нибудь помочь мне в этом? Я бы очень признателен!
Когда вы вводите код в R, вы увидите '+' на консоли, если ваша строка не завершена, а R ожидает большего количества кода в том же выражении. Вы увидите '>', когда предыдущая строка будет завершена, и R будет готов для нового выражения. Когда вы говорите 'x <- function (x)', вы создаете новую функцию с именем 'x', а R ожидает определения этой функции. Но вместо этого следующая строка 'y <- function (y)'. Похоже, вы, вероятно, хотите что-то вроде 'my_function <- function (x, y) {}'. –
Gregor
Итак, большая проблема - первые 2 строки. вы пытаетесь определить функции x и y как функции, но в синтаксисе R интерпретатор ждет определения функции после этого – Shape
Спасибо! Я понял! :) – sunnypy