我有一个数据框,例如:
name age
1 "Danny" 20
2 "Mitt" 35
3 "Dylan" 8
当我获得新的条目时,我想更新这个df
。我在下一行使用了nrow(df) + 1
:
df[nrow(df) + 1, ] <- c("Tom", 4)
有没有其他方法可以做到这一点?
你可以使用rbind
:
rbind(df,list("Tom",4))
检查?rbind
:
函数cbind和rbind是S3泛型的,具有数据帧的方法。如果至少一个参数是数据帧而其余参数是向量或矩阵,则将使用数据帧方法。可以有其他方法;特别是,有一个用于时间序列对象。有关如何选择使用方法的信息,请参阅“Dispatch”部分。如果某些参数属于S4类,即isS4(。)为真,则也会寻求S4方法,并且可能会调用包方法中隐藏的cbind / rbind函数,而这些函数又分别构建在cbind2或rbind2上。在这种情况下,遵循deparse.level,类似于默认方法。
在默认方法中,所有向量/矩阵必须是原子(参见向量)或列表。表达是不允许的。语言对象(例如公式和调用)和pairlists将被强制转换为列表:其他对象(例如名称和外部指针)将作为元素包含在列表结果中。输入可能具有的任何类都被丢弃(特别是,因子被其内部代码替换)。
如果有多个矩阵参数,则它们必须具有相同数量的列(或行),这将是结果的列数(或行数)。如果所有参数都是向量,则结果中的列(行)数等于最长向量的长度。较短参数中的值将被回收以实现此长度(如果它们仅按小部分回收,则会发出警告)。
让我建议你从add_row
包中的tibble
功能。你可以简单地完成如下:
df = add_row (df, name="Tom", age=4)