2013-04-03 3 views
0

В этом примередоступ отдельных значений в data.frame R

cars <- c("FORD", "GM") 
price <- list(c(1000, 2000, 3000), c(2000, 500, 1000)) 
myDF <- data.frame(cars=cars, price=cbind(price)) 

Как я могу получить доступ к отдельным значению цены, например, 500:

что-то вроде myDF$price[2][2]

Спасибо очень.


, связанный с этим вопросом:column with multiple values in data.frame

+0

Пока не ответ, но я подозреваю, что у вас возникли проблемы с данными организация. Рассмотрите возможность просмотра reshape2 и в целом концепцию [укладки/распаковки данных] (http://en.wikipedia.org/wiki/Wide_and_narrow_data). – mlt

ответ

2

Вот три варианта:

> myDF[[2]][[2]][2] 
[1] 500 
> myDF[[c(2, 2, 2)]] 
[1] 500 
> myDF$price[[2]][2] ## This is like what you were after... 
[1] 500 

Все в основном говорит, получить вторую колонку, а затем получить второй вектор из второго столбца, а затем получить второй элемент в векторе.

Третий вариант - это то, что вы пытались сделать, но в этом случае необходимо [[, а не [.

1

[Я не могу комментировать, так что я должен дать ответ]

Более простой способ сделать то, что вы пытаетесь это

price <- data.frame(FORD=c(1000, 2000, 3000), GM=c(2000, 500, 1000)) 
price$GM[2] 
+0

Благодарим вас за комментарий, однако я не уверен, что это лучший подход, потому что каждое сырье в целом имеет более двух записей (автомобиль, цвет, цена), что вы предлагаете в этом случае, например: 'F color 1000 , 2000, 3000' - три колонны. – Sergey

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