У меня проблемы с индексированием data.frames в R. Я новичок в R. У меня есть data.frame
с именем d
, который имеет 35512 столбцов и 77 строк. У меня есть список с именем rd
, который содержит 35512 элементов. Я хотел бы, чтобы все столбцы d
соответствовали элементам в rd
меньше 100. Вот что я делаю:
# just to prove I'm not crazy
> length(colnames(d))
[1] 35512
> length(rownames(d))
[1] 77
> length(rd)
[1] 35512
# find all the elements of rd less than 100 (+ unnecessary faffing?)
> i <- unlist(rd<100)
> names(i) <- NULL
# try to extract all the elements of d corresponding to rd < 100
> d <- d[,i]
Error in `[.data.frame`(d, , i) : undefined columns selected
Я действительно не хочу заниматься вещами unlist
и names(i) <- NULL
, но я становлюсь серьезно параноиком. Кто-нибудь может помочь с тем, что, черт возьми, означает это сообщение об ошибке?
Если это поможет, переменная rd
создается с использованием следующего:
rd = lapply(lapply(d, range), diff)
Что, я надеюсь, говорит мне разницу в диапазоне каждого столбца d
.
P.S. потрясающий бонус для тех, кто может сказать мне команду, чтобы найти форму data.frame, кроме запроса длины его имени строки и столбца.
Редактировать: Вот как выглядит rd
:
> rd[1:3]
$`10338001`
[1] 7198.886
$`10338003`
[1] 4748.963
$`10338004`
[1] 3173.046
и когда я завершу свою работу, i
выглядит так:
> i[7:10]
[1] FALSE FALSE FALSE TRUE