在R中对数据帧进行子集化 - 意外结果

时间:2015-11-08 17:17:18

标签: r dataframe subset

好的,找不到更好的标题

假设我有my_dataframe:

Name Value1 Value2
AA    10     20
BB    15     30

如果我这样做: nrow(my_dataframe[my_dataframe$Value2>20,] 结果我得到'1'

我想创建my_second_dataframe,例如只有列'Value2':

my_second_dataframe<- my_dataframe[,'Value2', drop=FALSE]

让我查看一下:

class(my_second_dataframe)
[1] "data.frame"
class(my_second_dataframe$Value2)
[1] "numeric"

然后:

nrow(my_second_dataframe[my_second_dataframe$Value2>20,]
NULL

????? 这将是一个函数的一部分,我想在其中隔离一个选择的列,并根据阈值数量获取该列的行数。我做错了什么?

由于

1 个答案:

答案 0 :(得分:2)

基于?Extract

中的文档
  

drop:对于矩阵和数组。如果为TRUE,则结果强制转换为   可能的最小尺寸(参见示例)。这只适用于   提取元素,而不是替换。请进一步了解   的信息。

此外,默认情况下,drop = TRUE

[
x[i, j, ... , drop = TRUE]

因此,我们需要指定drop = FALSE以避免在只有一个列或行时强制转换到可能的最低维度。

在OP的例子中

my_second_dataframe[my_second_dataframe$Value2>20,, drop=FALSE]
相关问题