为什么子集选择语句中的粘贴功能会导致无效的参数导致一元运算符错误?

时间:2019-05-20 14:34:03

标签: r dplyr

我需要删除几列以相同前缀开头的列,例如income_2018,income_2017、2016年收入。我要做的是在代码的开头指定一个变量-current_year。当current_year设置为2018时,我也想删除该字段和前两年的列(income_2018,income_2017、2016收入)。

我将子集与粘贴功能结合使用来否定地选择列并将其删除,但是粘贴导致“对一元运算符无效的参数”错误。

current_year = 2018
df<- subset(df,select =-c(paste("income_",current_year,sep = ""),paste("income_",current_year-1,sep = ""),paste("income_",current_year-2,sep = ""),paste("income_",current_year-3,sep = "")))

-c(someothercol,someothercol2,someothercol3,paste(“ income_”,:   一元运算符的参数无效

1 个答案:

答案 0 :(得分:4)

我们可以使用-代替setdiff

subset(df, select = setdiff(names(df), nm1))

其中

'nm1'是paste

创建的列名
nm1 <- paste0("income_",  current_year - (0:3))