在 R 中创建包含字符和运算符的向量

Creating a vector in R including characters and operators

我想在R中分配一个vector来写更少的代码并确保代码没有错误。 我想使用 subset() 函数排除观察结果 "obs 1", "obs 4", "obs 9" 等。但是,我想创建一个包含这些观察结果的向量,以便在 subset() 函数中使用。

示例 - 我希望它是这样的:

excluded <- column1!= "obs 1" &  column1!= "obs 4" & column1!= "obs 9"
dataframe <- subset(dataframe, excluded)

示例 - 有效的方法和我想避免的方法

excluded <- column1!= "obs 1" &  column1!= "obs 4" & column1!= "obs 9"
dataframe <- subset(dataframe, column1!= "obs 1" &  column1!= "obs 4" & column1!= "obs 9")

c()list()、两者的组合以及column1 <- "column1"我都试过了。

提前致谢!


更新数据集示例。

set.seed(42) 
n <- 12
dataframe <- data.frame(column1=as.character(factor(paste("obs",1:n))),rand=rep(LETTERS[1:2], n/2), x=rnorm(n))
dataframe

#output -first 5 rows:

   column1  rand      x
1    obs 1    A  1.37096
2    obs 2    B -0.56470
3    obs 3    A  0.36313
4    obs 4    B  0.63286
5    obs 5    A  0.40427
# load package
library(data.table)

# set as datatable
setDT(dataframe)

# put exclusion criteria into vector
y <- c("obs 1", "obs 4", "obs 9")

# subset
dataframe[!column1 %in% y]

您应该指定一个逻辑向量,然后使用它进行子集化。 %in% 运算符避免重复。

excluded <- c("obs 1", "obs 4", "obs 9")

subset(dataframe, !(dataframe$column1 %in% excluded))
#    column1 rand           x
# 2    obs 2    B -0.56469817
# 3    obs 3    A  0.36312841
# 5    obs 5    A  0.40426832
# 6    obs 6    B -0.10612452
# 7    obs 7    A  1.51152200
# 8    obs 8    B -0.09465904
# 10  obs 10    B -0.06271410
# 11  obs 11    A  1.30486965
# 12  obs 12    B  2.28664539