[英]subsetting data.frame without column names
> dput(test)
structure(list(MEMORY1 = c(7.5, 6, 6, 3.5, 5, 5), MEMORY2 = c(5,
7.5, 3, 3.5, 5, 5), MEMORY3 = c(5, 3.5, 3, 3.5, 5, 2), MEMORY4 = c(2,
1.5, 3, 3.5, 1, 2), MEMORY5 = c(7.5, 3.5, 3, 3.5, 5, 7), MEMORY6 = c(2,
5, 7.5, 7.5, 5, 5), MEMORY7 = c(2, 1.5, 3, 3.5, 5, 2), MEMORY8 = c(5,
7.5, 7.5, 7.5, 5, 8)), .Names = c("MEMORY1", "MEMORY2", "MEMORY3",
"MEMORY4", "MEMORY5", "MEMORY6", "MEMORY7", "MEMORY8"), row.names = c(NA,
6L), class = "data.frame")
> test
MEMORY1 MEMORY2 MEMORY3 MEMORY4 MEMORY5 MEMORY6 MEMORY7 MEMORY8
1 7.5 5.0 5.0 2.0 7.5 2.0 2.0 5.0
2 6.0 7.5 3.5 1.5 3.5 5.0 1.5 7.5
3 6.0 3.0 3.0 3.0 3.0 7.5 3.0 7.5
4 3.5 3.5 3.5 3.5 3.5 7.5 3.5 7.5
5 5.0 5.0 5.0 1.0 5.0 5.0 5.0 5.0
6 5.0 5.0 2.0 2.0 7.0 5.0 2.0 8.0
我有一个data.frame,我想只是第一行的子集。 如果我test[1, ]
,结果是
> test[1, ]
MEMORY1 MEMORY2 MEMORY3 MEMORY4 MEMORY5 MEMORY6 MEMORY7 MEMORY8
1 7.5 5 5 2 7.5 2 2 5
我如何对data.frame进行子集化,这样我只得到一个没有列名的数字向量?
你想要的是一个数字向量而不是data.frame。 为此,您只需使用as.numeric
进行转换
> as.numeric(df[1,])
[1] 7.5 5.0 5.0 2.0 7.5 2.0 2.0 5.0
您可以使用unlist
与选项use.names=FALSE
只返回vector
没有名字。
unlist(test[1,], use.names=FALSE)
#[1] 7.5 5.0 5.0 2.0 7.5 2.0 2.0 5.0
test[1,]
仍然是一个包含8列的data.frame
。 甲data.frame
可以被视为一个list
具有相同length
为它的list
元素(或列)。 所以我们可以使用unlist
。 当您从多行创建vector
时,这也适用。
unlist(test[1:2,], use.names=FALSE)
或者正如@Frank建议的那样,如果我们通过保持维度来对多行进行子集化,我们将名称设置为NULL
并转换为matrix
。
as.matrix(setNames(test[1:2,],NULL))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.