gpt4 book ai didi

r - R 是否忽略数据框中以点开头的变量名称扩展?

转载 作者:行者123 更新时间:2023-12-04 22:40:10 25 4
gpt4 key购买 nike

我有一个数据框,其中一些变量名称包含“。”延期。如果我尝试在没有完整变量名的情况下访问它,R 似乎会忽略这个扩展并给我这个变量。是什么导致了这种情况/为什么会发生?下面是我的问题的一个小例子。

y <- rnorm(100)
x <- rlnorm(100)

data <- cbind.data.frame(y,x)

colnames(data) <- c("y.rnorm","x.rlnorm")

# these both return the same thing
data$y
data$y.rnorm

最佳答案

R 设置为按设计为部分匹配提供结果。

阅读栏目 3.4 & 4.3 R语言定义。

3.4.1 Character. The strings in i are matched against the names attribute of x and the resulting integers are used. For [[ and $ partial matching is used if exact matching fails, so x$aa will match x$aabb if x does not contain a component named "aa" and "aabb" is the only name which has prefix "aa". For [[, partial matching can be controlled via the exact argument which defaults to NA indicating that partial matching is allowed, but should result in a warning when it occurs. Setting exact to TRUE prevents partial matching from occurring, a FALSE value allows it and does not issue any warnings. Note that [ always requires an exact match. The string "" is treated specially: it indicates ‘no name’ and matches no element (not even those without a name). Note that partial matching is only used when extracting and not when replacing.





4.3.2 Partial matching on tags. Each remaining named supplied argument is compared to the remaining formal arguments using partial matching. If the name of the supplied argument matches exactly with the first part of a formal argument then the two arguments are considered to be matched. It is an error to have multiple partial matches. Notice that if f <- function(fumble, fooey) fbody, then f(f = 1, fo = 2) is illegal, even though the 2nd actual argument only matches fooey. f(f = 1, fooey = 2) is legal though since the second argument matches exactly and is removed from consideration for partial matching. If the formal arguments contain ‘...’ then partial matching is only applied to arguments that precede it.



更新

正如 Uwe 所指出的,可能存在对 R 语言定义的未决更新,因为 [[ 的行为部分匹配已更改。浏览 R News显示以下内容在 3.1.0 版本中已弃用和失效:

Partial matching when using the $ operator on data frames now throws a warning and may become defunct in the future. If partial matching is intended, replace foo$bar by foo[["bar", exact = FALSE]]

关于r - R 是否忽略数据框中以点开头的变量名称扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47583897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com