Динамическая матрица из векторов

#r #matrix #purrr

#r #матрица #муррр

Вопрос:

при создании динамической матрицы из этих векторов

 V1 <- c(13, 31, 54)
name1 <- c("a", "b2", "c")
V2 <- c(17, 27, 34, 52)
name2 <- c("a", "b1", "b2", "c")
V3  <- c(19, 25, 33, 47, 58, 44)
name3 <- c("a", "b1", "b2", "b3", "c", "d")
V4  <- c(13, 29, 35, 56)
name4 <- c("a", "b1", "b2", "c")
V5<-c(21, 35, 67, 82, 96)
name5<-c("d", "c", "b3", "b1", "b2")
names(V1) <- name1
names(V2) <- name2
names(V3) <- name3
names(V4) <- name4
names(V5) <- name5
 

и используя этот код для создания матрицы

 lst1 <- mget(ls(pattern = '^V\d 

Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь


Комментарии:

1. Мне очень жаль, я неправильно добавил код - он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.

 result <- data.frame(purrr::map2_dfr(lst1, lst2, setNames))
rownames(result) <- ls(pattern = '^V\d 


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows

 library(dplyr)
`row.names<-`(as.data.frame(bind_rows(Map(setNames, lst1, lst2))), 
          ls(pattern = '^V\d 


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.

 lst1 <- mget(ls(pattern = '^V\d 



))
t(sapply(lst1, `length<-`, max(lengths(lst1))))
lst2 <- mget(ls(pattern = '^name\dКак я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код - он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
library(purrr)
map2_dfr(lst1, lst2, setNames)

Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код - он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


)
result

# a b2 c b1 b3 d
#V1 13 31 54 NA NA NA
#V2 17 34 52 27 NA NA
#V3 19 33 58 25 47 44
#V4 13 35 56 29 NA NA
#V5 NA 96 35 82 67 21

Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
t(sapply(lst1, `length<-`, max(lengths(lst1))))
lst2 <- mget(ls(pattern = '^name\dКак я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код - он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
library(purrr)
map2_dfr(lst1, lst2, setNames)

Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код - он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
# a b2 c b1 b3 d
#V1 13 31 54 NA NA NA
#V2 17 34 52 27 NA NA
#V3 19 33 58 25 47 44
#V4 13 35 56 29 NA NA
#V5 NA 96 35 82 67 21

Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
t(sapply(lst1, `length<-`, max(lengths(lst1))))
lst2 <- mget(ls(pattern = ‘^name\d

Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код — он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
library(purrr)
map2_dfr(lst1, lst2, setNames)Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код — он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


)
result

# a b2 c b1 b3 d
#V1 13 31 54 NA NA NA
#V2 17 34 52 27 NA NA
#V3 19 33 58 25 47 44
#V4 13 35 56 29 NA NA
#V5 NA 96 35 82 67 21

Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
t(sapply(lst1, `length<-`, max(lengths(lst1))))
lst2 <- mget(ls(pattern = ‘^name\d

Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код — он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
library(purrr)
map2_dfr(lst1, lst2, setNames)Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код — он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))

# For column names
col <- unlist(sapply(lst1, names), use.names=FALSE)

# An empty matrix.
# Rows are named after each list item
# Columns are the unique values from «col»
m <- matrix(NA, nrow = length(lst1), ncol = length(unique(col)),
dimnames = list(names(lst1), unique(col)))

# Using the lengths of each list to identify the rows,
# and matching col with unique column names,
# fill in the values by unlisting your list
m[cbind(rep(seq_along(lst1), lengths(lst1)),
match(col, colnames(m)))] <- unlist(lst1, use.names=FALSE)
# a b2 c b1 b3 d
# V1 13 31 54 NA NA NA
# V2 17 34 52 27 NA NA
# V3 19 33 58 25 47 44
# V4 13 35 56 29 NA NA
# V5 NA 96 35 82 67 21

))
t(sapply(lst1, `length<-`, max(lengths(lst1))))
lst2 <- mget(ls(pattern = ‘^name\d

Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код — он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
library(purrr)
map2_dfr(lst1, lst2, setNames)Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код — он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


)
result

# a b2 c b1 b3 d
#V1 13 31 54 NA NA NA
#V2 17 34 52 27 NA NA
#V3 19 33 58 25 47 44
#V4 13 35 56 29 NA NA
#V5 NA 96 35 82 67 21

Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
t(sapply(lst1, `length<-`, max(lengths(lst1))))
lst2 <- mget(ls(pattern = ‘^name\d

Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код — он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
library(purrr)
map2_dfr(lst1, lst2, setNames)Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код — он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
# a b2 c b1 b3 d
#V1 13 31 54 NA NA NA
#V2 17 34 52 27 NA NA
#V3 19 33 58 25 47 44
#V4 13 35 56 29 NA NA
#V5 NA 96 35 82 67 21

Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
t(sapply(lst1, `length<-`, max(lengths(lst1))))
lst2 <- mget(ls(pattern = ‘^name\dКак я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код — он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
library(purrr)
map2_dfr(lst1, lst2, setNames)

Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код — он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


)
result

# a b2 c b1 b3 d
#V1 13 31 54 NA NA NA
#V2 17 34 52 27 NA NA
#V3 19 33 58 25 47 44
#V4 13 35 56 29 NA NA
#V5 NA 96 35 82 67 21

Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
t(sapply(lst1, `length<-`, max(lengths(lst1))))
lst2 <- mget(ls(pattern = ‘^name\dКак я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код — он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.


))
library(purrr)
map2_dfr(lst1, lst2, setNames)

Как я могу добавить столбец, как показано на рисунке ниже, с именами векторов, не изменяя структуру матрицы?

введите описание изображения здесь

Комментарии:

1. Мне очень жаль, я неправильно добавил код — он должен быть там сейчас (но я здесь не в своей тарелке, поэтому я не уверен на 100%, что это сделано правильно

Ответ №1:

Вы можете использовать ls аргумент, который вы использовали для захвата переменных и присвоения имен строк.


Комментарии:

1. Большое вам спасибо! Это помогло мне понять это намного лучше

Ответ №2:

Мы также можем использовать bind_rows


Ответ №3:

В качестве альтернативы вы можете перейти непосредственно lst1 к матрице всего за несколько шагов. lst2 не требуется.