Получить значения из кадра данных, используя цикл - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть фрейм данных x, в котором есть 3 столбца и 5 строк.

        Group 1 Group 2 Group 3
brandA  -1.4095 -0.9295 -0.6889 
brandB  -0.7400 -0.6498 -0.3269
brandC  -1.7454 -0.9119 -0.8219 
sizeM    0.5047 -3.4571  0.4003
sizeL   -1.3012 -5.9978 -0.2422

Мне нужно создать al oop, чтобы получить b1 для brandA в группе 1 (-1,4) и в группе 2 (-0,9) и в группе 3 (-0,6). И b2 для бренда B в Группе 1, 2 и 3, и так далее для b3. Я пытался использовать пасту Trivil Get, но я не знаю, как это сделать.

for (i in 1:3) {
  b1 <- get(paste("x"))[['Group', sep=""]] 
}

1 Ответ

0 голосов
/ 26 февраля 2020

Используйте by, чтобы разделить фрейм данных по строкам и отменить список для создания именованных векторов. setNames - изменить имя списка на нужное, а затем использовать list2env для построения каждого элемента в списке в глобальной среде. Обратите внимание, что b1 ~ b3 являются именованными векторами, а не кадрами данных с одной строкой.

lst <- setNames(by(df[1:3,], 1:3, unlist), paste0("b", 1:3))
list2env(lst, .GlobalEnv)

b1
#  Group1  Group2  Group3 
# -1.4095 -0.9295 -0.6889

b2
#  Group1  Group2  Group3 
# -0.7400 -0.6498 -0.3269

b3
#  Group1  Group2  Group3 
# -1.7454 -0.9119 -0.8219 

Данные

df <- structure(list(Group1 = c(-1.4095, -0.74, -1.7454, 0.5047, -1.3012),
    Group2 = c(-0.9295, -0.6498, -0.9119, -3.4571, -5.9978),
    Group3 = c(-0.6889, -0.3269, -0.8219, 0.4003, -0.2422)),
  class = "data.frame", row.names = c("brandA", "brandB", "brandC", "sizeM", "sizeL"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...