Разбор значения ячейки как имени строки в rbind () - PullRequest
0 голосов
/ 18 мая 2018

У меня есть две данные dfName & dfTest.

> dfName <- c("Ball", "Cat", "Dog")
> dfName
[1] "Ball" "Cat"  "Dog"

Я задаю имя первой строки dfTest как "Apple",

> dfTest <- data.frame(t(1:3))
> rownames(dfTest) <- "Apple"
> dfTest
      X1 X2 X3
Apple  1  2  3

Я хочучтобы добавить новые строки к dfTest и присвоить имя его строкам, используя dfName.

for(i in 1:3) {
  dfTest <- rbind(dfTest, dfName[i] = data.frame(t(1:3)))
}

Но эта ошибка будет повторена,

Error: unexpected '=' in:
"for(i in 1:3) {
  dfTest <- rbind(dfTest, dfName[i] ="

Поэтому я использую rownamesкак обходной путь,

for(i in 1:3) {
  dfTest <- rbind(dfTest, data.frame(t(1:3)))
  rownames(dfTest)[i+1] <- dfName[i]
}
> dfTest
      X1 X2 X3
Apple  1  2  3
Ball   1  2  3
Cat    1  2  3
Dog    1  2  3

Нет проблем, если это просто строковая переменная,

> varA <- "Elephant"
> dfTest <- rbind(dfTest, varA = data.frame(t(1:3)))
> dfTest <- rbind(dfTest, "Flower" = data.frame(t(1:3)))

Я знаю, что это просто еще одна строка / функция, но мне интересно, почему я не могу использовать dfName[i] in rbind().

Edit: я не могу использовать rownames(dfTest) <- dfName, потому что их количество строк не совпадает с моими фактическими данными.

1 Ответ

0 голосов
/ 18 мая 2018

Вам не нужно устанавливать имена по отдельности

Просто используйте:

dfTest <- data.frame(matrix(1,3,4))

dfName <- c("Ball", "Cat", "Dog")

rownames(dfTest) <- dfName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...