我无法理解使用原因 and behavior of the $
子集 a 中的符号data.frame
下面的例子是在我正在参加的初学者课程中提出的(不是现场教授,所以不能在那里询问):
temp_mat <- matrix(1:9, nrow=3)
colnames(temp_mat) <- c('a', 'b', 'c')
temp_df <- data.frame(temp_mat)
Calling temp_df
显然输出:
a b c
1 1 4 7
2 2 5 8
3 3 6 9
课程中给出的例子是:
temp_df[temp_df$c < 10]
哪个输出:
a b c
1 1 4 7
2 2 5 8
3 3 6 9
使用原因问题:课程表明$
用于部分匹配,并且x$y
是一个完全替代x[["y", exact=FALSE]]
。为什么我们要在这里使用部分匹配运算符?我们使用它是因为我们确信在我们的temp_df
没有其他类似于“c”的列可能会被误选吗?此外,如何衡量部分匹配?至少有 % 的字符匹配之类的?看来有一个getElement
如果使用具有未知或相似列名称的数据集(例如家庭电话与手机,这些会被视为有效的部分匹配吗?)
行为问题:看来上面的例子temp_df[temp_df$c < 10]
意思是“返回 temp_df 中 c 列小于 10 的元素子集”,并且由于所有 c 列元素都满足条件,因此返回整个数据帧。我的解释显然是错误的,因为temp_df[temp_df$c < 9]
返回:
a b
1 1 4
2 2 5
3 3 6
虽然c列中的第1行和第2行元素确实满足小于9的标准,但整列被省略。然后我的问题变成双重的:那个逻辑向量实际上在说什么/在做什么?我将如何编写对“从 temp_df 返回元素子集(其中列 c 小于 9)”的解释并让它返回:
a b c
1 1 4 7
2 2 5 8
因为在我看来,元素 1 和 2(第 1 行和第 2 行)满足该标准,因为它们的列 c 值小于 9,因此应该返回。