R中的数据表很奇怪,列名混合在一起

Geo*_*los 3 datatable r

所以我创造了这个变量,被称为mc_split_device该数据表称为内mc_with_devices。但是,如果键入,mc_with_devices$mc_split我将获得列的值,mc_split_device而我从未使用name创建任何变量mc_split

在此处输入图片说明

g_t*_*t_m 7

参见Hadley Wickham的Advanced R

$是简写运算符,其中x $ y等于x [[“ y”,确切= FALSE]]。它通常用于访问数据帧中的变量,例如mtcars $ cyl或diamonds $ carat。

因此,这exact=FALSE$mc_split尽管没有确切名称的列也可以工作的原因。

mc_with_devices[,.(mc_split)]顺便说一句,我不相信没有双引号就不会奏效。以下将起作用:

mc_with_devices[,"mc_split_resp"]


Ron*_*hah 5

它部分匹配列的名称。从?Extract

names:对于提取,通常与对象名称部分匹配(请参见“环境”下的内容)。

在某些情况下,字符索引可以部分匹配(请参阅pmatch)与子集对象的名称或暗名匹配

因此,默认行为是仅在通过$从递归对象(环境除外)中提取内容时使用部分匹配。

因此,当您这样做

mtcars$m
Run Code Online (Sandbox Code Playgroud)

你得到

#[1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4
#[17] 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4
Run Code Online (Sandbox Code Playgroud)

与...相同 mtcars$mpg

有时可能会造成混淆,并且如果您希望确保在完成部分匹配时收到通知。您可以通过以下方式打开警告

options(warnPartialMatchDollar = TRUE)
mtcars$m
# [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4
#[17] 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4
Run Code Online (Sandbox Code Playgroud)

警告消息:在$.data.frame(mtcars,m)中:数据帧中“ m”与“ mpg”的部分匹配