При взгляде на ответ, опубликованный недавно на SO, я заметил незнакомую инструкцию присваивания. Вместо обычной формы myVar<- myValue
она использовала для myVar[]<- myValue
. Лично я никогда не видел такого задания, но он имел очень полезный эффект - он преобразовал назначенные данные myValue в форму myVar.
Я хотел бы использовать это в своем коде. Однако документация для "<-"
, похоже, молчала.
Является ли это хорошо зарекомендовавшей себя функцией, и на нее можно положиться, чтобы работать во всех случаях?
Кроме того, я предполагаю, что это может быть побочным эффектом стека вызовов функций, т.е. вызывать <-
и [
в последовательности, но я не мог понять, как это сделать. Может кто-то пролить свет на это?
Здесь пример -
# A dataframe
df1<- data.frame(a=1:4, b=11:14)
# simple assignment assigns to class of RHS
df1<- c(21:24,31:34)
df1
#[1] 21 22 23 24 31 32 33 34
class(df1)
#[1] "integer"
#assignment with [] casts to class of LHS
df1<- data.frame(a=1:4, b=11:14)
df1[]<- c(21:24,31:34)
df1
# a b
# 1 21 31
# 2 22 32
# 3 23 33
# 4 24 34
# recycling to preserve shape
df1[]<- c(101:102)
df1
# a b
# 1 101 101
# 2 102 102
# 3 101 101
# 4 102 102
class(df1)
#data.frame
# reshaping
df1<- data.frame(a=1:4, b=11:14)
df1[] <- matrix(1:8, 2,4)
df1 #matrix reshaped
class(df1)
#[1] "data.frame"
# flattening
x<- 1:8
x[]<- matrix(1:8,4,2)
x
#[1] 1 2 3 4 5 6 7 8