W poniższym kodzie oczekiwałem czegoś o długości 96, ale otrzymałem listę o długości 48. Czy możesz wyjaśnić ten wynik?Wypełnianie listy pustymi wektorami powoduje zmianę jej długości
num_empty = 96
empty_vecs = as.list(1:num_empty)
for(i in 1:num_empty){empty_vecs[[i]] = c()}
length(empty_vecs)
[1] 48
Teraz odpowiem na pytanie, które doprowadziło mnie do tego zachowania. Pierwotne pytanie brzmiało: "Jak utworzyć listę pustych wektorów w R?" a odpowiedź brzmiała: "Wymień c()
z character()
w powyższym kodzie."
inny sposób to: 'rep (list (NULL), 96)' –
Asa notesem, jeśli robisz to w odwrotnej kolejności 'for (i in num_empty: 1) {empty_vecs [[i]] = c()}' lista będzie puste. – agstudy
Mogę uczynić jaśniejszym, że 'c()' jest funkcją, która zwraca 'NULL', gdy nie przekazał żadnych parametrów na wyjściu. 'c()' nie jest funkcją "wektorową", o której wszyscy myślą. Jest przeznaczony do łączenia wektorów. 'c()' nie tworzy pustego wektora w taki sam sposób jak 'character()' lub 'numeric()'. – MrFlick