我还是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"功能?
有人可以列出上述示例的替代方案,以帮助我理解子集化中的选项吗?
我不知道如何使用向量来更简洁地为您的特定示例进行子集化.您可能正在考虑的是,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参数处理列上的条件.