首页 > 解决方案 > 在 rbind() 中将单元格值解析为行名

问题描述

我有两个数据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]rbind().

编辑:我不能使用rownames(dfTest) <- dfName,因为它们的行数与我的实际数据不匹配。

标签: rrbind

解决方案


您不必单独设置名称

只需使用:

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

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

rownames(dfTest) <- dfName

推荐阅读