使用列名作为变量如何从R中的data.frame中删除整个列

时间:2016-09-20 18:14:53

标签: r

使用列名作为变量如何从R中的data.frame中删除整个列。例如,如果给出了这个data.frame:

>data<-data.frame(x=1:10,y=20:30,z=30:40)
>name="x"
>data$name<-NULL

它显示错误未定义的列名选择

1 个答案:

答案 0 :(得分:0)

很多方法:

df <- data.frame(x=1:10, y=21:30, z=31:40)

str(df)
## 'data.frame':    10 obs. of  3 variables:
##  $ x: int  1 2 3 4 5 6 7 8 9 10
##  $ y: int  21 22 23 24 25 26 27 28 29 30
##  $ z: int  31 32 33 34 35 36 37 38 39 40

col_name <- "x"

此:

df <- data.frame(x=1:10, y=21:30, z=31:40)

df[,col_name] <- NULL

str(df)
## 'data.frame':    10 obs. of  2 variables:
##  $ y: int  21 22 23 24 25 26 27 28 29 30
##  $ z: int  31 32 33 34 35 36 37 38 39 40

或:

df <- data.frame(x=1:10, y=21:30, z=31:40)

df[[col_name]] <- NULL

str(df)
## 'data.frame':    10 obs. of  2 variables:
##  $ y: int  21 22 23 24 25 26 27 28 29 30
##  $ z: int  31 32 33 34 35 36 37 38 39 40

或:

df <- data.frame(x=1:10, y=21:30, z=31:40)

df <- df[,setdiff(colnames(df), col_name)]

str(df)
## 'data.frame':    10 obs. of  2 variables:
##  $ y: int  21 22 23 24 25 26 27 28 29 30
##  $ z: int  31 32 33 34 35 36 37 38 39 40

此处还有更多内容:Drop data frame columns by name