使用rbind将数据添加到数据框作为列而不是r中的行

时间:2018-09-21 14:06:18

标签: r rbind

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

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将数据显示为列而不是行。我在做什么错了?

2 个答案:

答案 0 :(得分:1)

您的代码中发生的事情是您没有试图将两行绑定在一起。您正在将空行与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))

P.S。您很少需要声明一个空的数据框。我假设您需要空的数据框来执行某种循环操作。

答案 1 :(得分:-1)

给定的示例不能很好地工作,但是假设您有一个数据框df,并且想要向其添加一行,它将是:

df <- rbind(df, c(symbol,price_last,Momentum_Index)) 

想法是将数据框绑定到使用字母vector创建的cc(symbol,price_last,Momentum_Index)