Подмножество для функции в R - PullRequest
2 голосов
/ 25 марта 2020

Попытка использовать функцию для получения средств из нескольких различных подмножеств столбцов и добавления их в качестве новых столбцов. DMcomponents определяет символьный вектор. Каждая запись в этом векторе определяется собственным символьным вектором с именами столбцов.

for (i in DMcomponents){
  DMData["i"] <- rowMeans(DMData[c(i)])
}

На мой взгляд, это должно работать, но я получаю эту ошибку:

Error in `[.data.frame`(DMData, c(i)) : undefined columns selected

Я предполагаю, что это как-то связано с тем, как вектор "вставляется" в аргумент подмножества? Спасибо

id <- c(1, 2, 3)
a <- c(4, 4, 4)
b <- c(6, 6, 6)
c <- c(8, 8, 8)
d <- c(10, 10, 10)

abcd <- data.frame(id, a, b, c, d)


DMcomponents <- c("ab", "cd")

ab <- c("a", "b")
cd <- c("c", "d")

ab <- c(5, 5, 5)
cd <- c(9, 9, 9)

желаемый результат:

abcd_end <- data.frame(id, a, b, c, d, ab, cd)

1 Ответ

1 голос
/ 25 марта 2020

Нам не нужно указывать

lst1 <- mget(DMcomponents)

 for (nm in names(lst1)){
    abcd[nm] <- rowMeans(abcd[lst1[[nm]]])
  }

abcd
#  id a b c  d ab cd
#1  1 4 6 8 10  5  9
#2  2 4 6 8 10  5  9
#3  3 4 6 8 10  5  9

данные

id <- c(1, 2, 3)
a <- c(4, 4, 4)
b <- c(6, 6, 6)
c <- c(8, 8, 8)
d <- c(10, 10, 10)

abcd <- data.frame(id, a, b, c, d)
DMcomponents <- c("ab", "cd")
ab <- c("a", "b")
cd <- c("c", "d")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...