2012-02-23 1 views
1

Этот вопрос более продвинутый, чем аналогичный here. Ожидаемое количество символов около 20Плоская матрица с R как data.frame

Когда я сюжет вещи в data.frame, я это люблю:

# t1 is a df 
> plot((q1*s1+q2*s2)/(s1+s2),data=t1) 

но можно ли использовать эту форму для матрицы?

[Наконец работает МВО, спасибо!]

> M<-matrix(data=rnorm(30),ncol=2,dimnames=list(NULL,c('q1','q2'))) 
> plot(M) 
> x=1:dim(M)[1] 
> plot(x~q1/q2,data=data.frame(M),type='l') 

enter image description here

ответ

1

Вы можете использовать с для этого

with(data.frame(mymatrix), plot((q1*s1+q2*q2)/(s1+s2))) 

Надеется, что это помощь

+0

+1 это сработало, но почему бы и нет другого метода, все еще думая. Добавлено MVO для пробной версии - следует ли начинать варны по-разному? – hhh

+1

Опять же, метод формулы работает только тогда, когда вы предоставляете * действительную формулу * - вам нужно построить что-то по сравнению с чем-то другим (обратите внимание на символ '~' в примере, который я дал). Предоставление только одного значения не является допустимой формулой, потому что R не знает, является ли это y или x или что с ним связано. –

1

Такого рода черчения (где вы типа формул, связанных столбцов в dataframe в) доступен только для кадров данных.

Если colnames(mymatrix) являются q1, s1 и т.д., то вы можете достичь аффект, выполнив:

plot(myformula, data=data.frame(mymatrix)) 

т.е. принуждать матрицу к dataframe, а затем использовать формулу.

Update

Пример демонстрирует это работает:

# construct a matrix 
> mymatrix <- array(runif(10*2),dim=c(10,2)) 
# give it column names X and Y 
> colnames(mymatrix)<-c('X','Y') 
> mymatrix 
       X   Y 
[1,] 0.07346608 0.81321578 
[2,] 0.09525474 0.17852467 
[3,] 0.81246522 0.45747972 
[4,] 0.01286714 0.82517127 
[5,] 0.77554012 0.87725725 
[6,] 0.71908435 0.71628493 
[7,] 0.13212848 0.67827601 
[8,] 0.65993809 0.01650703 
[9,] 0.11385161 0.99433644 
[10,] 0.22750439 0.45611635 
# plot Y vs X -- note you need to convert the matrix to a data frame first. 
> plot(Y~X,data.frame(mymatrix)) 
+0

Ааа, это не работает потому что приведенный вами пример не работает (тот, где t1 является фреймом данных вверх Вверх). –

+1

Я привел пример, показывающий работу моего решения. Причина не в том, что первая строка кода, которую вы дали в качестве примера («когда я создаю такие вещи, как data.frame, мне это нравится») не будет работать - это не действительная формула. Я только использовал ваш пример в своем ответе, потому что вы сказали, что это сработало в вашем вопросе, и я предположил, что это произошло, поскольку у меня не было данных для примера, чтобы воссоздать вашу проблему. –

+1

Если вы используете метод формулы, он работает, но попробуйте график (Y/X, data.frame (mymatrix)) ... не работает, потому что в методе по умолчанию нет параметров «данных» !!!! Итак, я согласен с математикой. Первый пример недействителен даже с data.frame – dickoa

Смежные вопросы