R如何处理不明确的列名?

R如何处理不明确的列名?,r,R,最近,我遇到了一个奇怪的R行为,我想更好地理解它 让我们假设以下两个例子: Example 1: ebit.2018_base <- c(1,2,3,5,7,3,2) ebit.2017_base <- c(1,2,3,5,7,3,2) ebit <- data.frame(ebit.2018_base, ebit.2017_base) ebit$test <- ebit$ebit.2018 * 5 示例1: 息税前利润2018_基数是的,你说得对 从摘录文档(您可

最近,我遇到了一个奇怪的R行为,我想更好地理解它

让我们假设以下两个例子:

Example 1:

ebit.2018_base <- c(1,2,3,5,7,3,2)
ebit.2017_base <- c(1,2,3,5,7,3,2)
ebit <- data.frame(ebit.2018_base, ebit.2017_base)

ebit$test <- ebit$ebit.2018 * 5
示例1:
息税前利润2018_基数是的,你说得对

从摘录文档(您可以通过:
?“$”
?摘录
)访问):

[[和$都选择列表中的单个元素 是,$不允许计算索引,而[[does.x$name是 相当于x[[“name”,exact=FALSE]]。此外,部分匹配 [[的行为可以使用确切的参数进行控制

因为$允许部分匹配,所以第一种情况有效。但在第二种情况下,它无法解析单个列,因此认为您请求的是不存在的列;因此出现错误。

是的,您是对的

从摘录文档(您可以通过:
?“$”
?摘录
)访问):

[[和$都选择列表中的单个元素 是,$不允许计算索引,而[[does.x$name是 相当于x[[“name”,exact=FALSE]]。此外,部分匹配 [[的行为可以使用确切的参数进行控制


因为$允许部分匹配,所以第一种情况有效。但在第二种情况下,它无法解析单个列,因此认为您请求的是不存在的列;因此出现错误。

另请参见:请参见:是,您是正确的。
$
运算符允许部分匹配。是的,您是正确的。如答案所示答案中表示,
$
运算符允许部分匹配。
Example 2

ebit.2018_base <- c(1,2,3,5,7,3,2)
ebit.2018_notbase <- c(1,2,3,5,7,3,2)
ebit.2017_base <- c(1,2,3,5,7,3,2)
ebit <- data.frame(ebit.2018_base, ebit.2018_notbase, ebit.2017_base)

ebit$test <- ebit$ebit.2018 * 5