2013-02-22 2 views
0

Привет, ребята, я задал аналогичный вопрос об этом here и получил некоторые действительно удивительные ответы. Но, оказывается, у меня больше данных, с которыми мне нужно работать с грустью. Поэтому у меня есть образцы данных в этом формате, которые генерируются с использованием head (data). Таким образом, у меня есть 3 образца с их собственным временем и данными скорости .... Я точно не используя скорость моих фактических данныхОшибка исправления R-программирования

Time Speed Time.1 Speed.1 Time.2 Speed.2 

Error in unique.default(x) : unique() applies only to vectors 

Будет ли возможно для вас, ребята, чтобы сказать мне, что делать? Я могу сделать это в excel с формулой, но у меня так много данных, что excel crashes, поэтому мне действительно нужно «R», но у меня очень минимальные знания об этом ... спасибо, ребята ....

+1

Столкнулись ** точно ** Код, Я написал по этим данным три экземпляра? Предполагается, что он будет работать для «любой суммы» образцов. Вот почему мы берем каждый столбец и запускаем его с помощью 'lapply'. Он отлично работает для меня. Возможно, вы должны показать нам, какую вы хотите ...? – Arun

+0

И, пожалуйста, примите ответы, если они ответят на ваш вопрос. – Arun

+0

Также здесь: пожалуйста, прочитайте [FAQ] (http://stackoverflow.com/faq) о том, как задать вопрос: дать ему значащее название - это то, с чего начать. –

ответ

0

Запустить тот же код. Почему вы редактируете by=3? Вы хотите создать idx = 1, 3, 5 .... by=3, создаст 1, 4, 7.... Данные, до тех пор, как в формате Time, data, Time, data, Time, data, ..., ..., вы можете использовать код же

require(IRanges) 
# by equals 2 because we want to get the `Time` column index every time 
idx <- seq(1, ncol(data), by=2) 
# idx is now 1, 3, 5. It will be passed one value at a time to `i`. 
# that is, `i` will take values 1 first, then 3 and then 5 and each time 
# the code within is executed. 
o <- lapply(idx, function(i) { 
    ir1 <- IRanges(start=seq(0, max(data[[i]]), by=401), width=401) 
    ir2 <- IRanges(start=data[[i]], width=1) 
    t <- findOverlaps(ir1, ir2) 
    d <- data.frame(mean=tapply(data[[i+1]], queryHits(t), mean)) 
    cbind(as.data.frame(ir1), d) 
}) 

дает мне для этого данные:

# > o 
# [[1]] 
# start end width mean 
# 1  0 400 401 1.05 
# 
# [[2]] 
# start end width mean 
# 1  0 400 401 1.1 
# 
# [[3]] 
# start end width  mean 
# 1  0 400 401 1.383333 
+0

Это была моя ошибка, я не вводил что-то вправо ... еще раз спасибо –