使用列名作为变量如何从R中的data.frame中删除整个列。例如,如果给出了这个data.frame:
>data<-data.frame(x=1:10,y=20:30,z=30:40)
>name="x"
>data$name<-NULL
它显示错误未定义的列名选择
答案 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