通过r中的后缀从数据框中删除向量
removing vectors from data frame by suffix in r
数据框 have
中的某些向量包含后缀 _rc_1
。我想从数据框中删除这些向量。我尝试了几种选择并收到错误,表明我误解了某些东西。例如:
library(dplyr)
newdata <- subset(mydata, -contains("_rc_1"))
Error: No tidyselect variables were registered
我不知道我是如何解决这个问题的。
也许最好使用 grepl()
和正则表达式,但我正在努力实现一个也能按计划执行的版本。
contains
与 dplyr
一起工作 如果我们需要使用 subset
(base R
函数),请使用 grep
,它可以采用正则表达式模式和 return 数字索引或列名称本身作为 subset
中的 select
参数可以将两者都作为有效输入
subset(mydata, select = grep("_rc_1", names(mydata), value = TRUE, invert = TRUE))
此外,在 base R
中有 startsWith/endsWith
用于 prefix/suffix 匹配
subset(mydata, select = names(mydata)[!endsWith(names(mydata), "_rc_1")])
在 dplyr
中,select_helpers
- contains
与 select
一起使用
library(dplyr)
mydata %>%
select(-contains("_rc_1"))
可使用内置数据集重现'iris'
data(iris)
head(subset(iris, select = names(iris)[!endsWith(names(iris), "Length")]))
iris %>%
select(-contains('Sepal')) %>%
head
在 base R 中,您可以使用 grepl
来获得长度等于 ncol(mydata)
的逻辑向量,对于以 _rc_1
结尾的列名称,它是 TRUE
($确保 _rc_1 出现在最后)。然后在 TRUE
s 和 FALSE
s 与 !
交换后,您可以使用 []
.
对数据框进行子集化
newdata <- mydata[!grepl('_rc_1$', names(mydata))]
数据框 have
中的某些向量包含后缀 _rc_1
。我想从数据框中删除这些向量。我尝试了几种选择并收到错误,表明我误解了某些东西。例如:
library(dplyr)
newdata <- subset(mydata, -contains("_rc_1"))
Error: No tidyselect variables were registered
我不知道我是如何解决这个问题的。
也许最好使用 grepl()
和正则表达式,但我正在努力实现一个也能按计划执行的版本。
contains
与 dplyr
一起工作 如果我们需要使用 subset
(base R
函数),请使用 grep
,它可以采用正则表达式模式和 return 数字索引或列名称本身作为 subset
中的 select
参数可以将两者都作为有效输入
subset(mydata, select = grep("_rc_1", names(mydata), value = TRUE, invert = TRUE))
此外,在 base R
中有 startsWith/endsWith
用于 prefix/suffix 匹配
subset(mydata, select = names(mydata)[!endsWith(names(mydata), "_rc_1")])
在 dplyr
中,select_helpers
- contains
与 select
library(dplyr)
mydata %>%
select(-contains("_rc_1"))
可使用内置数据集重现'iris'
data(iris)
head(subset(iris, select = names(iris)[!endsWith(names(iris), "Length")]))
iris %>%
select(-contains('Sepal')) %>%
head
在 base R 中,您可以使用 grepl
来获得长度等于 ncol(mydata)
的逻辑向量,对于以 _rc_1
结尾的列名称,它是 TRUE
($确保 _rc_1 出现在最后)。然后在 TRUE
s 和 FALSE
s 与 !
交换后,您可以使用 []
.
newdata <- mydata[!grepl('_rc_1$', names(mydata))]