r - 在 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
,因为它们的行数与我的实际数据不匹配。
解决方案
您不必单独设置名称
只需使用:
dfTest <- data.frame(matrix(1,3,4))
dfName <- c("Ball", "Cat", "Dog")
rownames(dfTest) <- dfName