我想我错过了一些非常简单的东西,但我似乎无法找到与我需要的直接相关的解决方案:我有一个数据框,其中有一个字母作为行名称和两列数值。作为我正在运行的循环的一部分,我创建了一个新的向量(来自索引),其中包含字母和数字(例如“f2”),然后我需要将其作为新行的名称,然后再添加两个数字对它(基于代码的其他部分,但我很好)。我得到的是矢量/索引的名称作为行名称的标题,我不确定我是否缺少rbind或其他的功能以使其变得容易。
示例代码:
$rake db:delete
rake db:create
rake db:migrate
在我的循环中,“index.vector”是一个随机样本,因此我不能将字母/数字作为行名写入,因此需要能够从向量或从中创建行名称样本的索引。
循环运行并且将创建随机数量的新行,因此我无法指定需要新名称的行的数量 - 除非有一种方法可以每次都为最新行或底行执行此操作。
任何帮助将不胜感激!
答案 0 :(得分:1)
我理解了这个问题,但无法解决问题。因此,建议另一种方法来实现相同的
替代解决方案:在循环中的数据绑定之后附加行标签,然后在行末将行名称分配给数据框。
#Data frame and vector creation
row.names <- letters[1:5]
vector.1 <- c(1:5)
vector.2 <- c(2:6)
vector.3 <- letters[6:10]
data.frame <- data.frame(vector.1,vector.2)
#loop starts
index.vector <- "f2"
data.frame <- rbind(data.frame,c(6,11))
row.names<-append(row.names,index.vector)
#loop ends
rownames(data.frame) <- row.names
data.frame
输出:
vector.1 vector.2
a 1 2
b 2 3
c 3 4
d 4 5
e 5 6
f2 6 11
希望这会有所帮助。
答案 1 :(得分:1)
不优雅,但有效:
new_row <- data.frame(setNames(list(6, 11), colnames(data.frame)), row.names = paste(index.vector, "2", sep=""))
data.frame <- rbind(data.frame, new_row)
data.frame
# vector.1 vector.2
# a 1 2
# b 2 3
# c 3 4
# d 4 5
# e 5 6
# f22 6 11
答案 2 :(得分:0)
如果使用rbind
操纵数据框,则最新元素将始终位于数据框的“底部”。因此,您还可以通过
rownnames(data.frame)[nrow(data.frame)] = "new_name"