У меня есть список с кадрами несколько данных в нем:R извлечения значений из внутри фрейма данных в списке
weekday <- c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")
data1 <- c(letters[1:7])
data2 <- c(letters[8:14])
df1 <- data.frame(day = weekday, val = data1)
df2 <- data.frame(day = weekday, val = data2)
my_list <- list(list_1 = df1, list_2 = df2)
Я пытаюсь выяснить, как вытащить данные, которые соответствуют определенный день в конкретный кадр данных. Я знаю, как извлечь кадр данных list_1
,
> my_list[["list_1"]]
day val
1 Sun a
2 Mon b
3 Tue c
4 Wed d
5 Thu e
6 Fri f
7 Sat g
И как извлечь определенную строку, когда я знаю, индекс дня:
> my_list[["list_1"]][1,]
day val
1 Sun a
Но я не могу за жизнь мне выяснить, как получить определенную строку, когда я хочу совместить значение. Пример того, что я думаю, что должно работать это:
my_list[["list_1"]][list_1$day == "Sun",]
, но я получаю сообщение об ошибке:
Error in `[.data.frame`(my_list[["list_1"]], list_1$day == "Sun",) :
object 'list_1' not found
Я знаю, что я мог бы просто подмножество ФР к временной переменной, а затем это было бы легко, я «Я просто пытаюсь сделать это компактным и следовать хорошей практике.
Если я хочу, чтобы затем извлечь 'val' из этой строки, как я могу сделать это внутри 'with()'? Я не могу просто добавить '[[" val "]]', он возвращается как 'NULL' –
@JonathanH - Is' with (my_list, list_1 $ val) '(или' with (my_list, list_1 [["val "]])') что вы хотите? Это возвращает весь столбец 'val' как вектор. –
P.S. - Вы можете проверить 'with()' используя такие вещи, как 'with (my_list, ls.str())' и 'with (my_list, ls())' –