首页 > 解决方案 > 使用 rbind 将数据作为列而不是 r 中的行添加到数据帧

问题描述

我想将此数据作为行而不是列添加到我的数据框中。

df = data.frame('symbol'= character(0), 'price_last'= integer(0), 
                                    'Momentum_Index'= integer(0))
symbol = 'ABC'
price_last = 219
Momentum_Index = 96
df <- rbind(df,symbol,price_last,Momentum_Index)

df 将数据显示为列而不是行。我究竟做错了什么?

标签: rrbind

解决方案


您的代码中发生的事情是您没有尝试将两行绑定在一起。您正在用 3 个不同的对象绑定一个空行。rbind猜测这些对象是同一列的一部分,因为没有一个对象具有列名属性(因此它们应该进入的列是 NA),并且您最终会得到同一列中的所有内容。

df = data.frame('symbol'= character(0), 'price_last'= integer(0), 
                'Momentum_Index'= integer(0))
symbol = 'ABC'
price_last = 219
Momentum_Index = 96

df <- rbind(df,symbol,price_last,Momentum_Index)
#   c..ABC....219....96..
# 1                   ABC
# 2                   219
# 3                    96

相反,您需要将要绑定的数据采用行格式,其中每列数据都有一个列名属性:

df1 = data.frame('symbol'= character(0), 'price_last'= integer(0), 
                'Momentum_Index'= integer(0))
df2 = df = data.frame('symbol'= 'ABC', 'price_last'= 219, 
                      'Momentum_Index'= 96)

df <- rbind(df1,df2)
#   symbol price_last Momentum_Index
# 1    ABC        219             96

您的代码还有一个最后一个问题在这里不会成为问题,但这将成为您将来的问题。您正在使用左引号'<object>'而不是右引号。在您的情况下,您可以将单引号从列名中去掉,也可以将左引号更改为右引号。如果您要尝试在列名中使用空格命名列,例如my column name = character(). 右侧引号位于波浪号 (~) 键上方。

更正确的引用示例:

df1 = data.frame(symbol= character(0), price_last= integer(0), 
                 Momentum_Index= integer(0))
df1 = data.frame(`symbol`= character(0), `price_last`= integer(0), 
                 `Momentum_Index`= integer(0))

PS 你很少需要声明一个空的数据框。我将假设您需要空数据框来执行您正在执行的某种循环操作。


推荐阅读