R中的数字列名
numeric column names in R
我有一个数据框如下:
structure(list(`104` = c(NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, "yes", NA, NA, NA, NA), `15` = c(NA,
NA, NA, NA, ">= 4.0", ">= 4.0", NA, "~ 2", "~ 2", "~ 2", "~ 2",
"~ 2", "~ 2", "< 2.2", "~2.75", NA, "~2.75", "~2.75", "~2.75",
"~2.75")), .Names = c("104", "15"), row.names = 45:64, class = "data.frame")
我知道使用数字列名不是最佳做法,但在这种情况下是必要的。我一直在通过使用反引号`
检索列来操纵我的数据框
不幸的是,我在上面的数据框中发现了一些有趣的东西。
> table(testtest$`10`)
yes
1
>
但是没有名称为 10 的列,所以看起来它正在检索
> table(testtest$`104`)
yes
1
>
我现在很紧张,不相信这可能会在我不知情的情况下再次弹出 41
和 4100
等其他栏目。
任何解释都会有所帮助!
谢谢
这是部分匹配造成的。为避免这种情况,请使用 [[
提取列
testtest[["10"]]
#NULL
而正确的列名给出了输出
testtest[["104"]]
#[1] NA NA NA NA NA NA NA NA NA NA NA
#[12] NA NA NA NA "yes" NA NA NA NA
根据?"$"
Both [[ and $ select a single element of the list. The main difference
is that $ does not allow computed indices, whereas [[ does. x$name is
equivalent to x[["name", exact = FALSE]]. Also, the partial matching
behavior of [[ can be controlled using the exact argument.
一般情况下,最好不要使用数字列名或以数字开头的名称。我们可以使用方便的函数 make.names
附加一个非数字字符 "X"
names(testtest) <- make.names(names(testtest))
names(testtest)
#[1] "X104" "X15"
我有一个数据框如下:
structure(list(`104` = c(NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, "yes", NA, NA, NA, NA), `15` = c(NA,
NA, NA, NA, ">= 4.0", ">= 4.0", NA, "~ 2", "~ 2", "~ 2", "~ 2",
"~ 2", "~ 2", "< 2.2", "~2.75", NA, "~2.75", "~2.75", "~2.75",
"~2.75")), .Names = c("104", "15"), row.names = 45:64, class = "data.frame")
我知道使用数字列名不是最佳做法,但在这种情况下是必要的。我一直在通过使用反引号`
检索列来操纵我的数据框不幸的是,我在上面的数据框中发现了一些有趣的东西。
> table(testtest$`10`)
yes
1
>
但是没有名称为 10 的列,所以看起来它正在检索
> table(testtest$`104`)
yes
1
>
我现在很紧张,不相信这可能会在我不知情的情况下再次弹出 41
和 4100
等其他栏目。
任何解释都会有所帮助! 谢谢
这是部分匹配造成的。为避免这种情况,请使用 [[
提取列
testtest[["10"]]
#NULL
而正确的列名给出了输出
testtest[["104"]]
#[1] NA NA NA NA NA NA NA NA NA NA NA
#[12] NA NA NA NA "yes" NA NA NA NA
根据?"$"
Both [[ and $ select a single element of the list. The main difference is that $ does not allow computed indices, whereas [[ does. x$name is equivalent to x[["name", exact = FALSE]]. Also, the partial matching behavior of [[ can be controlled using the exact argument.
一般情况下,最好不要使用数字列名或以数字开头的名称。我们可以使用方便的函数 make.names
names(testtest) <- make.names(names(testtest))
names(testtest)
#[1] "X104" "X15"