Длина объекта списка возвращает 1 в R, если не 1 - PullRequest
2 голосов
/ 07 января 2020

У меня есть список x

       X1
1      0.8
2      1.0
3    661.7
4    661.8
5    661.9
6    662.3
7    662.6
8    662.7
9    663.3
10   663.6
11   663.7
12   663.9
13   664.0
14   664.1
15   664.3
16   664.4
17   664.5
18   664.7
19   665.1
20   666.9
21   667.5
22   668.2
23   668.3
24   669.7
25   670.3
26   670.8
27   671.1
28   672.0
29   672.1
30   674.8
31   675.3
32   677.5
33   677.9
34   678.5
35   678.9
36   679.0
37   686.6
38   687.6
39   714.1
40   899.1
41   900.4
42   901.1
43   901.3
44   902.7
45   908.3
46   908.7
47   908.9
48   909.0
49   909.2
50   910.0
51   910.1
52   910.3
53   910.6
54   910.7
55   911.3
56   911.4
57   911.6
58   911.8
59   912.6
60   912.7
61   912.8
62   913.0
63   913.1
64   913.2
65   913.3
66   913.7
67   913.9
68   914.0
69   914.2
70   914.3
71   914.4
72   914.6
73   915.2
74   915.3
75   915.5
76   915.6
77   915.7
78   915.9
79   916.0
80   916.1
81   916.3
82   916.5
83   916.6
84   916.7
85   916.9
86   917.3
87   917.5
88   917.6
89   917.8
90   917.9
91   918.0
92   918.2
93   918.3
94   918.5
95   918.6
96   918.8
97   918.9
98   919.0
99   919.2
100  919.3
101  919.5
102  919.6
103  919.7
104  919.9
105  920.0
106  920.2
107  920.3
108  920.5
109  920.6
110  920.8
111  920.9
112  921.0
113  921.1
114  921.2
115  921.3
116  921.3
117  921.5
118  921.6
119  921.7
120  921.8
121  922.0
122  922.1
123  922.4
124  922.5
125  922.6
126  922.7
127  922.9
128  923.0
129  923.2
130  923.3
131  923.5
132  923.6
133  923.8
134  923.9
135  927.2
136  927.3
137  927.4
138  927.6
139  927.7
140  927.8
141  928.0
142  928.1
143  928.3
144  928.4
145  928.5
146  928.7
147  928.8
148  928.9
149  929.1
150  929.2
151  929.3
152  929.5
153  929.6
154  929.8
155  929.9
156  930.1
157  930.2
158  930.3
159  930.3
160  930.5
161  930.6
162  930.7
163  930.9
164  931.0
165  931.1
166  931.2
167  931.3
168  931.4
169  931.5
170  931.7
171  931.8
172  932.0
173  932.0
174  932.1
175  932.2
176  932.4
177  932.5
178  932.6
179  932.7
180  933.3
181  933.4
182  933.6
183  933.7
184  933.8
185  934.5
186  934.7
187  934.8
188  934.9
189  935.0
190  935.2
191  935.3
192  935.3
193  935.5
194  935.6
195  935.7
196  935.8
197  936.0
198  936.1
199  936.3
200  936.4
201  936.5
202  936.7
203  936.8
204  936.9
205  937.1
206  937.2
207  937.4
208  937.5
209  937.7
210  937.8
211  937.9
212  938.1
213  938.2
214  938.4
215  938.5
216  938.7
217  938.9
218  939.0
219  939.2
220  939.4
221  939.7
222  939.9
223  940.3
224  940.7
225  940.9
226  941.4
227  941.7
228  942.1
229  942.6
230  942.7
231  943.3
232  943.5
233  943.9
234  944.9
235  945.0
236  945.1
237  945.4
238  945.6
239  945.8
240  945.9
241  946.2
242  947.6
243  947.9
244  948.2
245  948.3
246  948.5
247  948.6
248  948.8
249  948.9
250  949.5
251  949.6
252  951.8
253  951.9
254  952.0
255  952.1
256  952.5
257  952.6
258  953.0
259  953.3
260  953.4
261  953.5
262  953.7
263  953.8
264  953.9
265  954.1
266  954.2
267  954.4
268  954.5
269  954.7
270  954.8
271  955.0
272  955.1
273  955.2
274  955.4
275  955.5
276  955.6
277  955.7
278  955.9
279  956.0
280  956.1
281  956.3
282  956.4
283  956.5
284  956.6
285  956.9
286  957.2
287  957.3
288  957.4
289  957.5
290  957.9
291  958.9
292  959.0
293  959.3
294  959.5
295  959.9
296  960.0
297  960.2
298  960.5
299  960.6
300  960.8
301  960.8
302  961.4
303  961.5
304  961.6
305  961.7
306  961.8
307  961.9
308  968.8
309  969.1
310  970.0
311  970.5
312  970.7
313  974.2
314  998.7
315  998.8
316  998.9
317  999.1
318  999.2
319 1000.3
320 1001.2
321 1001.4
322 1001.5
323 1001.6
324 1001.7
325 1003.2
326 1003.4
327 1003.6
328 1004.2
329 1004.3
330 1004.4
331 1004.5
332 1004.6
333 1005.3
334 1005.4
335 1005.5
336 1005.6
337 1005.7
338 1005.9
339 1006.0
340 1006.1
341 1006.8
342 1006.9
343 1007.1
344 1007.2
345 1007.3
346 1007.4
347 1007.6
348 1007.7
349 1007.8
350 1008.0
351 1008.1
352 1008.7
353 1008.8
354 1008.9
355 1009.0
356 1009.2
357 1009.3
358 1009.3
359 1009.5
360 1009.6
361 1009.7
362 1009.8
363 1010.0
364 1010.2
365 1010.4
366 1010.5
367 1010.6
368 1010.7
369 1010.9
370 1011.0
371 1011.1
372 1011.2
373 1011.4
374 1011.5
375 1011.6
376 1011.7
377 1011.9
378 1012.0
379 1012.1
380 1012.2
381 1012.3
382 1012.4
383 1012.6
384 1012.7
385 1012.8
386 1013.0
387 1013.2
388 1013.4
389 1013.5
390 1013.6
391 1013.6
392 1013.8
393 1013.9
394 1014.0
395 1014.0
396 1014.3
397 1014.7
398 1014.8
399 1014.9
400 1015.7
401 1015.8
402 1016.0
403 1016.1
404 1016.2
405 1016.5
406 1016.6
407 1016.9
408 1017.0
409 1017.1
410 1017.3
411 1017.4
412 1017.5
413 1017.7
414 1017.8
415 1017.8
416 1018.3
417 1018.5
418 1026.6
419 1027.0
420 1027.3
421 1027.4
422 1027.7
423 1028.6
424 1029.1
425 1029.9
426 1030.0
427 1030.2
428 1270.0
429 1270.1
430 1270.2
431 1270.3
432 1270.4
433 1270.5
434 1270.7
435 1270.7
436 1270.9
437 1271.0
438 1271.3
439 1271.4
440 1272.3
441 1272.5
442 1273.1
443 1273.2
444 1273.3
445 1273.4
446 1273.5
447 1273.8
448 1274.0
449 1274.1
450 1274.3
451 1274.4
452 1274.6
453 1274.7
454 1274.8
455 1274.9
456 1275.1
457 1275.3
458 1275.5
459 1275.6
460 1275.8
461 1275.9
462 1276.1
463 1276.2
464 1276.3
465 1276.4
466 1276.6
467 1276.7
468 1276.8
469 1277.2
470 1277.3
471 1277.5
472 1277.6
473 1277.7
474 1277.9
475 1278.0
476 1278.1
477 1278.2
478 1278.3
479 1278.4
480 1278.5
481 1278.7
482 1279.0
483 1279.0
484 1279.1
485 1279.3
486 1279.3
487 1279.5
488 1279.6
489 1279.7
490 1279.8
491 1280.3
492 1280.4
493 1280.7
494 1280.8
495 1280.9
496 1281.1
497 1281.3
498 1281.4
499 1281.5
500 1282.3
501 1283.0
502 1283.1
503 1284.0
504 1284.8
505 1284.9
506 1285.0
507 1285.1
508 1285.4

, который имеет длину 508, хотя, когда я использую length (x), он возвращает 1. Я попытался использовать функцию

length(as.vector(x))

хотя это также не работает и возвращает 1. Есть ли другая форма, в которую я должен преобразовать этот список, чтобы я мог точно найти длину? Для справки, я использую длину для дублирования других элементов, используя функцию rep_len ().

1 Ответ

2 голосов
/ 07 января 2020

as.vector на data.frame возвращает сам data.frame, поскольку method для as.vector с data.frame

methods('as.vector')
#[1] as.vector,abIndex-method        as.vector,ANY-method            as.vector,dgCMatrix-method      as.vector,dgeMatrix-method     
#[5] as.vector,diagonalMatrix-method as.vector,dsCMatrix-method      as.vector,ldenseMatrix-method   as.vector,Matrix-method        
#[9] as.vector,ndenseMatrix-method   as.vector,sparseVector-method   as.vector.factor                as.vector.Matrix*              
#[13] as.vector.sparseVector*        

мы также можем проверить обратное, т. Е. На data.frame

grep('^as\\.', methods(class = 'data.frame'), value = TRUE)
#[1] "as.data.frame.data.frame" "as.data.table.data.frame" 
#[3] "as.list.data.frame"       "as.matrix.data.frame"     "as.tbl.data.frame"     

и length совпадает с количеством столбцов data.frame, то есть здесь оно равно 1. Вместо этого нам нужно nrow(x)

as.vector(mtcars) # nothing changed
length(as.vector(mtcars))
#[1] 11

Но, предположим, что если мы сделаем

nrow(mtcars)
#[1] 32

length, то можно также применить к vector, извлекая столбец с помощью $ или [[

length(mtcars[[1]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...