#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
не требуется.