R $mycol、[[mycol]]和[,mycol,with=FALSE]的地址列之间的确切区别是什么?
在阅读了R $mycol、[[mycol]]和[,mycol,with=FALSE]的地址列之间的确切区别是什么?,r,data.table,R,Data.table,在阅读了data.tableFAQ(第1.5节)之后,我的印象是,这三种列的寻址方式或多或少是等效的。但至少[,mycol,with=FALSE]的输出与$mycol和[[mycol]]有很大不同: dt1 <- fread( " id,colA,colB id1,3,xxx id2,0,zzz id3,NA,yyy id4,0,aaa ") dt1$colA <- factor(dt1$colA) myvar="colA" dt1$col
data.table
FAQ(第1.5节)之后,我的印象是,这三种列的寻址方式或多或少是等效的。但至少[,mycol,with=FALSE]
的输出与$mycol
和[[mycol]]
有很大不同:
dt1 <- fread(
" id,colA,colB
id1,3,xxx
id2,0,zzz
id3,NA,yyy
id4,0,aaa
")
dt1$colA <- factor(dt1$colA)
myvar="colA"
dt1$colA
# [1] 3 0 <NA> 0
# Levels: 0 3
dt1[[myvar]]
# [1] 3 0 <NA> 0
# Levels: 0 3
dt1[, myvar, with=FALSE]
# colA
# 1: 3
# 2: 0
# 3: NA
# 4: 0
dt1您问题的第一部分,即$
和[[
之间的差异,已在以下章节中介绍:
通过[
建立索引类似于原子向量,并选择
指定的元素
[[
和$
都选择列表中的单个元素
不同之处在于,$
不允许计算索引,而[[
是的。x$name
相当于x[[“name”,exact=FALSE]]
,
[[
的部分匹配行为可以使用
精确的
参数
data.table中的符号dt1[,…myvar]
生成一个数据表,其中列在myvar
中求值。结果是一个单列数据表,该列的类为factor
数据帧的等价物是:as.data.frame(dt1)[,myvar,drop=FALSE]
啊,我错过了最后一个表单也给出了因子的内容。非常感谢您的解释!