poner - funcion para sumar numero impares en excel
Selección de varias columnas/filas pares o impares para el marco de datos (4)
¿Hay alguna forma en R para seleccionar muchas filas / columnas no consecutivas, es decir, impares o pares?
Estoy trazando las cargas para mi análisis de componentes principales. Tengo 84 filas de datos ordenados así: x_1
y_1
x_2
..... x_42
y_42
Y en este momento estoy creando los marcos de datos para las cifras de las cargas x e y así:
data.pc = princomp(as.matrix(data))
x.loadings <- data.frame(x=data.pc$loadings[c(1, 3, 5, 7, 9, 11, 13 ,15, 17, 19,
21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41), 1])
yloadings <- data.frame(y=data.pc$loadings[c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20,
22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42), 1])
Seguramente hay una forma más fácil de hacer esto?
Cuando se utilizan vectores lógicos para la indexación, se reciclan para que tenga columnas impares o filas impares.
calld[ c(TRUE,FALSE), ] # rows
calld[ , c(TRUE,FALSE) ] #columns
Incluso filas o columnas:
calld[ !c(TRUE,FALSE), ] # rows
calld[ , !c(TRUE,FALSE) ] #columns
Cada tercera columna:
calld[ , c(TRUE,FALSE, FALSE) ] #columns 1,4,7 , ....
Deseo agregar el tidyverse
estilo tidyverse
a este problema, utilizando el operador %%
.
library(dplyr)
df <- data_frame(V1 = seq(1, 26), V2 = letters)
df %>% dplyr::filter(row_number() %% 2 == 0) ## Select even rows
df %>% dplyr::filter(row_number() %% 2 == 1) ## Select odd rows
df %>% dplyr::filter(row_number() %% 3 == 1)
## Select every 3rd row starting from first row
Puedes usar la misma idea para eliminar cada fila n, por supuesto. Ver here
Siempre puedes generar secuencias con seq:
even_indexes<-seq(2,42,2)
odd_indexes<-seq(1,41,2)
Entonces,
x.loadings <- data.frame(x=data.pc$loadings[odd_indexes,1])
Use %%
en combinación con seq_len
para crear un vector para indexar su marco de datos para encontrar columnas y filas pares e seq_len
Intenta algo como esto:
even <- seq_len(ncol(data.pc)) %% 2 # index
x.loadings <- data.frame(x=data.pc$loadings[even, ])
y.loadings <- data.frame(x=data.pc$loadings[!even, ] )