选择数据帧中的下一行,以便在R中插入数据

问题描述 投票:3回答:2

我有一个数据框,例如:

   name    age
1 "Danny"  20
2 "Mitt"   35
3 "Dylan"  8

当我获得新的条目时,我想更新这个df。我在下一行使用了nrow(df) + 1

df[nrow(df) + 1, ] <- c("Tom", 4)

有没有其他方法可以做到这一点?

r dataframe data-entry
2个回答
6
投票

你可以使用rbind

rbind(df,list("Tom",4))

检查?rbind

函数cbind和rbind是S3泛型的,具有数据帧的方法。如果至少一个参数是数据帧而其余参数是向量或矩阵,则将使用数据帧方法。可以有其他方法;特别是,有一个用于时间序列对象。有关如何选择使用方法的信息,请参阅“Dispatch”部分。如果某些参数属于S4类,即isS4(。)为真,则也会寻求S4方法,并且可能会调用包方法中隐藏的cbind / rbind函数,而这些函数又分别构建在cbind2或rbind2上。在这种情况下,遵循deparse.level,类似于默认方法。

在默认方法中,所有向量/矩阵必须是原子(参见向量)或列表。表达是不允许的。语言对象(例如公式和调用)和pairlists将被强制转换为列表:其他对象(例如名称和外部指针)将作为元素包含在列表结果中。输入可能具有的任何类都被丢弃(特别是,因子被其内部代码替换)。

如果有多个矩阵参数,则它们必须具有相同数量的列(或行),这将是结果的列数(或行数)。如果所有参数都是向量,则结果中的列(行)数等于最长向量的长度。较短参数中的值将被回收以实现此长度(如果它们仅按小部分回收,则会发出警告)。


3
投票

让我建议你从add_row包中的tibble功能。你可以简单地完成如下:

df = add_row (df, name="Tom", age=4)
© www.soinside.com 2019 - 2024. All rights reserved.