рассчитать каждую строку с некоторыми значениями в списке - PullRequest
0 голосов
/ 12 марта 2019

Мне интересно, как правильно выполнять векторные вычисления в R.

У меня есть такой набор данных.

            stay cops graduation
hinshi_#0  54722 6945      83674
hinshi_#1  13928 1798      21616
hinshi_#2    320   49        485
hinshi_#3  36010 4984      55184
hinshi_#4   7484  916      10618
hinshi_#5      6    0          6
hinshi_#6   6605  830       9741
hinshi_#7      2    0          5

и у меня есть список l<-c(20124 2682 30138).Здесь я хочу разделить каждую строку таблицы данных со списком.Позвольте мне взять первую строку данных,

 hinshi_#0  54722 6945      83674

Я хочу, чтобы они были похожи на 54722/20124, 6945/2682, 83764/30138 - вычислить первое значение вектора с первым значением списка, то же самое должно произойти со вторым итретий тоже.Есть хороший способ справиться с этим?спасибо.

Ответы [ 2 ]

2 голосов
/ 12 марта 2019

При условии, что я вас правильно понял, есть вариант

l <- c(20124, 2682, 30138)

df / sapply(l, rep, each = nrow(df))
#                  stay       cops   graduation
#hinshi_#0 2.719241e+00 2.58948546 2.7763620678
#hinshi_#1 6.921089e-01 0.67039523 0.7172340567
#hinshi_#2 1.590141e-02 0.01826995 0.0160926405
#hinshi_#3 1.789406e+00 1.85831469 1.8310438649
#hinshi_#4 3.718943e-01 0.34153617 0.3523126949
#hinshi_#5 2.981515e-04 0.00000000 0.0001990842
#hinshi_#6 3.282151e-01 0.30947054 0.3232132192
#hinshi_#7 9.938382e-05 0.00000000 0.0001659035

Пример данных

df <- read.table(text =
    "stay cops graduation
'hinshi_#0'  54722 6945      83674
'hinshi_#1'  13928 1798      21616
'hinshi_#2'    320   49        485
'hinshi_#3'  36010 4984      55184
'hinshi_#4'   7484  916      10618
'hinshi_#5'      6    0          6
'hinshi_#6'   6605  830       9741
'hinshi_#7'      2    0          5", header = T)
0 голосов
/ 12 марта 2019

l - это вектор, как указано (исправлено) в ответе @Maurits Ever.Мы можем использовать purrr:

as.data.frame(purrr::map2(df,l,function(x,y) x/y))

Результат (можно отформатировать для удаления научного дисплея):

    stay       cops   graduation
1 2.719241e+00 2.58948546 2.7763620678
2 6.921089e-01 0.67039523 0.7172340567
3 1.590141e-02 0.01826995 0.0160926405
4 1.789406e+00 1.85831469 1.8310438649
5 3.718943e-01 0.34153617 0.3523126949
6 2.981515e-04 0.00000000 0.0001990842
7 3.282151e-01 0.30947054 0.3232132192
8 9.938382e-05 0.00000000 0.0001659035
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...