#r #dataframe #matrix
#r #фрейм данных #матрица
Вопрос:
У меня есть следующий исходный фрейм данных:
original_df <- structure(c(0, 0, 0, 0, 1, 0, 0, 0, 0), .Dim = c(3L, 3L), .Dimnames = list(
c("foo", "bar", "qux"), c("A", "B", "C")
))
original_df
#> A B C
#> foo 0 0 0
#> bar 0 1 0
#> qux 0 0 0
А затем я выполняю некоторое преобразование, которое приводит к простой матрице:
transformed_mat <- structure(c(
-2.96100772320745e-06, 1.68169240440672e-05, -0.000126831814542474,
-9.94017331567414e-07, 0.000763027661834236, -0.000103315552273569,
-2.22776698138103e-06, 2.94317362067914e-05, -0.000190660599719715
), .Dim = c(3L, 3L))
transformed_mat
#> [,1] [,2] [,3]
#> [1,] -2.961008e-06 -9.940173e-07 -2.227767e-06
#> [2,] 1.681692e-05 7.630277e-04 2.943174e-05
#> [3,] -1.268318e-04 -1.033156e-04 -1.906606e-04
Как я могу замаскировать преобразованную матрицу именами столбцов и строк из original data frame
?
Желаемый результат:
A B C
foo -2.961008e-06 -9.940173e-07 -2.227767e-06
bar 1.681692e-05 7.630277e-04 2.943174e-05
qux -1.268318e-04 -1.033156e-04 -1.906606e-04
Ответ №1:
Мы можем использовать dimnames
присваивание, поскольку это оба matrix
es
dimnames(transformed_mat) <- dimnames(original_df)
transformed_mat
# A B C
#foo -2.961008e-06 -9.940173e-07 -2.227767e-06
#bar 1.681692e-05 7.630277e-04 2.943174e-05
#qux -1.268318e-04 -1.033156e-04 -1.906606e-04
Поскольку dimnames
это атрибут, другой способ — attr
через присвоение
attr(transformed_mat, "dimnames") <- attr(original_df, "dimnames")
Ответ №2:
просто используйте: dimnames(transformed_mat)<-dimnames(original_df)
Смотрите рабочий пример ниже:
> transformed_mat
A B C
foo -2.961008e-06 -9.940173e-07 -2.227767e-06
bar 1.681692e-05 7.630277e-04 2.943174e-05
qux -1.268318e-04 -1.033156e-04 -1.906606e-04
>
>
>
> original_df <- structure(c(0, 0, 0, 0, 1, 0, 0, 0, 0), .Dim = c(3L, 3L), .Dimnames = list(
c("foo", "bar", "qux"), c("A", "B", "C")
))
> original_df
A B C
foo 0 0 0
bar 0 1 0
qux 0 0 0
> transformed_mat <- structure(c(
-2.96100772320745e-06, 1.68169240440672e-05, -0.000126831814542474,
-9.94017331567414e-07, 0.000763027661834236, -0.000103315552273569,
-2.22776698138103e-06, 2.94317362067914e-05, -0.000190660599719715
), .Dim = c(3L, 3L))
> transformed_mat
[,1] [,2] [,3]
[1,] -2.961008e-06 -9.940173e-07 -2.227767e-06
[2,] 1.681692e-05 7.630277e-04 2.943174e-05
[3,] -1.268318e-04 -1.033156e-04 -1.906606e-04
> dimnames(transformed_mat)<-dimnames(original_df)
> transformed_mat
A B C
foo -2.961008e-06 -9.940173e-07 -2.227767e-06
bar 1.681692e-05 7.630277e-04 2.943174e-05
qux -1.268318e-04 -1.033156e-04 -1.906606e-04
Комментарии:
1. да, сэр, это то же самое. Я думаю, что он застрял в черновике дольше, чем обычно.
2. Хорошо, нет проблем. Я думаю, мы можем обвинить трафик : =)