R - 简化时的子集化?

SFu*_*n28 4 r

我还是R的新手,通过模式完成我的所有子集:
data [生成与数据长度相同的逻辑的命令]

子集(data,生成与数据长度相同的逻辑的命令)

例如:

test = c("A", "B","C")
ignore = c("B")
result = test[ !( test %in% ignore ) ]
result = subset( test , !( test %in% ignore ) )
Run Code Online (Sandbox Code Playgroud)

但我依稀记得从我的读物中可以看到更短/(更可读?)的方法吗?也许使用"with"功能?

有人可以列出上述示例的替代方案,以帮助我理解子集化中的选项吗?

jor*_*ran 6

我不知道如何使用向量来更简洁地为您的特定示例进行子集化.您可能正在考虑的是,with使用来自该数据帧的列来基于条件对数据帧进行子集化.例如:

dat <- data.frame(variable1 = runif(10), variable2 = letters[1:10])
Run Code Online (Sandbox Code Playgroud)

如果我们想要dat根据条件获取一个子集,variable1我们可以这样做:

dat[dat$variable1 < 0,]
Run Code Online (Sandbox Code Playgroud)

或者我们可以dat$*通过使用with以下方式保存自己每次写入:

with(dat,dat[variable1 < 0,])
Run Code Online (Sandbox Code Playgroud)

现在,你会注意到在这种情况下我真的没有保存任何按键.但是如果你有一个长名称的数据框和一个复杂的条件,它可以节省一些.?within如果要更改相关数据框,请参阅相关命令.

或者,你可以使用subset哪些可以做同样的事情:

subset(dat, variable1 < 0)
Run Code Online (Sandbox Code Playgroud)

subset 也可以通过select参数处理列上的条件.