names and values
“<-“
a<-c(1,2,3) # 建立一个value,并将name a指向它。
2.2.1 Non-syntactic names
2.3 Copy-on-modify
2.3.1 tracemem()
可以追踪vectors是否被复制,在循环的时候应该很好用。
2.3.2 Function calls
copy与否,取决于运算前后是否改变自变量。
2.3.3 Lists
list只是存储索引与object的元件,改变值,局部copy
2.3.4 Data frames
列:改变列值,只是部分列改变,局部copy
行:改变所有列值,全部copy
2.3.5 Character vectors
建立一个character pool,然后指向特定值。如果两个值一样,则存储位置一样。
2.4 Object size
使用 lobstr::obj_size() 来查看使用的memory,只看names
object_size也可以查看内存,values+ names
list 由于只是存储reference to values, 所以大小会比预期小。
对于1:10, 只存储首尾两个元素。
2.5 Modify-in-place
循环尽量使用list,避免使用dataframe,会导致每一次新复制都会复制values。
2.5.2 Environments
2.6 Unbinding and the garbage collector
使用gc()删除内存碎片,释放内存。
Vectors
3.2 Atomic vectors
原子向量:逻辑向量、整数向量、双精度向量和字符向量。

3.2.1 Scalars 标量
3.2.2 Making longer vectors with c()
3.2.3 Missing values
使用is.na()来代替==做判断
3.2.4 Testing and coercion
检验手段:is.logical(), is.integer(), is.double(), and is.character()
强迫顺序:character → double → integer → logical.
大部分的数学运算会强制为numeric
1 | x <- c(FALSE, FALSE, TRUE) |
3.3 Attributes
3.3.1 Getting and setting
attr(): 单独设置meta
attributes() :批量查看meta
structure():批量设置meta
3.3.2 Names
names(x) <- c(“a”, “b”, “c”)
setNames(1:3, c(“a”, “b”, “c”))
3.4 S3 atomic vectors
3.4.1 Factors

factor是一个integer变量,注意字符型操作的不适用