0
继码子一个数据帧,但包括子集中的行名称:转换一个数据帧与1个变量为载体
mpg = subset(mtcars, cyl=='6', select=mpg)
我怎样才能得到的MPG对象转换为仅包含值的载体?换句话说,我需要摆脱生成的MPG对象的行名称
继码子一个数据帧,但包括子集中的行名称:转换一个数据帧与1个变量为载体
mpg = subset(mtcars, cyl=='6', select=mpg)
我怎样才能得到的MPG对象转换为仅包含值的载体?换句话说,我需要摆脱生成的MPG对象的行名称
您有很多选项。
首先,由于使用的是subset
,您可以指定参数drop=TRUE
,但后来看到警告在这个答案):
subset(mtcars, cyl=='6', select=mpg, drop=TRUE)
[1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
但是从长远来看,你应该熟悉的R子集运营商[
,[[
和$
:
mtcars[mtcars$cyl==6, "mpg"]
[1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
而且可以简化通过使用该功能with
的代码最后一行(但同样,看到警告):
with(mtcars, mtcars[cyl==6, "mpg"])
[1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
警告:的subset
和with
某些方面可能被认为是有害的。首先在数据框的上下文中评估所有对象。所以,如果你碰巧在您的数据帧使用变量具有相同的名称作为列,表达式将计算为列名,而不是你的变量:
with(mtcars,mtcars[cyl==6,"mpg"])
[1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
gear <- 6
with(mtcars,mtcars[cyl==gear,"mpg"])
[1] 22.8 24.4 22.8 32.4 30.4 33.9 27.3 21.4
subset(mtcars, cyl==gear, select=mpg, drop=TRUE)
[1] 22.8 24.4 22.8 32.4 30.4 33.9 27.3 21.4
的with
和subset
通话得到了gear
从数据框,而不是从你设置到的地方6.
@spacedman,感谢您的编辑。我已经扩展了它。 – Andrie 2012-07-29 08:00:05