将特殊列名添加到数据帧

时间:2015-09-20 12:47:51

标签: r dataframe

我有数据框(比方说df)。我有因子f。 我想把这个因素插入p [1],p [2] ...,p [k] 其中k是整数正数。因此,它们中的每一个都将成为数据帧df中的新列。数据帧中的列名将保持为p [1],p [2] ...,p [k]。

如何通过循环将f插入p [1] .. p [k]?如何将它们作为新列添加到df(数据帧)?在每个新专栏中保留其编号非常重要。 以下是df:

的示例
> df
  var1 var2 var3
1   ac   bc   bc
2   bc   bc   cc
3   dc   ec   dc
4   gc   gc   gc

我有一个因素:

> f
[1] setosa     setosa     setosa   versicolor
Levels: setosa versicolor

如果k = 2,我想将df作为:

> df
  var1 var2 var3  p[1]        p[2]
1   ac   bc   bc  setosa     setosa
2   bc   bc   cc  setosa     setosa
3   dc   ec   dc  setosa     setosa
4   gc   gc   gc  versicolor versicolor

1 个答案:

答案 0 :(得分:1)

以下是如何执行此操作的方法:

for (i in 1:2) df[[sprintf("p[%i]", i)]] <- f
#  var1 var2 var3       p[1]       p[2]
#1   ac   bc   bc     setosa     setosa
#2   bc   bc   cc     setosa     setosa
#3   dc   ec   dc     setosa     setosa
#4   gc   gc   gc versicolor versicolor

当然,我无法想到你应该需要这个的任何理由。肯定有更好的方法来解决你的实际问题。

使用非语法有效的名称总是一个坏主意。