例如,我有一个数据框,我想根据特定条件对其进行子集化:
df[df$gender == "woman" & df$age > 40, ]
在R中进行此过滤的算法是什么?
答案 0 :(得分:1)
在执行代码df[df$gender == "woman" & df$age > 40, ]
期间,会发生以下情况:
df$gender
已提取。df$gender == "woman"
,返回了boolean
个向量。df$age
已提取。df$age > 40
,返回了boolean
个向量。AND
应用于向量的每个元素。df
中提取在步骤5中具有TRUE
标志的行。在上述所有情况下,都会调用后端C\C++
函数。例如。 []
子集函数在subset.c中调用do_subset
。
您可以研究R函数之间的映射,它是names.c中的C
后端
有关更多详细信息,请咨询Accessing R Source