列是否存在以及如何重新排列R数据框中的列

JD *_*ong 23 r

如何在R数据框的中间添加列?我想看看我是否有一个名为"LastName"的列,然后将其添加为第三列(如果它尚不存在).

had*_*ley 23

一种方法是将列添加到数据框的末尾,然后使用子集将其移动到所需位置:

d$LastName <- c("Flim", "Flom", "Flam")
bar <- d[c("x", "y", "Lastname", "fac")]
Run Code Online (Sandbox Code Playgroud)


Dir*_*tel 18

1)测试存在:在组合名中使用%in%,例如

> example(data.frame)    # to get 'd'
> "fac" %in% colnames(d)
[1] TRUE
> "bar" %in% colnames(d)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

2)你基本上必须从旧的前半部分,新的列和下半部分创建一个新的data.frame:

> bar <- data.frame(d[1:3,1:2], LastName=c("Flim", "Flom", "Flam"), fac=d[1:3,3])
> bar
  x y LastName fac
1 1 1     Flim   C
2 1 2     Flom   A
3 1 3     Flam   A
> 
Run Code Online (Sandbox Code Playgroud)