строки по определенной строке в матрице - PullRequest
0 голосов
/ 11 июня 2018
final.marks
#          raj sanga rohan rahul
#physics    45    43    44    49
#chemistry  47    45    48    47
#total      92    88    92    96

Это матрица, которая у меня есть.Теперь я хочу найти сумму по каждому предмету отдельно по соответствующим строкам и добавить их в качестве нового столбца в вышеприведенную матрицу в качестве 5-го столбца.Однако мой код, т. Е. class.marks.chemistry<- rowSums(final.marks[2,]), продолжает выдавать ошибку:

Ошибка: rowSums (final.marks [2,]): 'x' должен быть массивом как минимум из двух измерений

Можете ли вы помочь мне решить это.Я очень новичок в R или в любой другой форме сценариев или программирования.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Другой вариант будет использовать addmargins на matrix

addmargins(as.matrix(df), 2)
#         raj sanga rohan rahul Sum
#physics    45    43    44    49 181
#chemistry  47    45    48    47 187
#total      92    88    92    96 368
0 голосов
/ 11 июня 2018

Вы имеете в виду это?

# Sample data
df <- read.table(text =
    "          raj sanga rohan rahul
physics    45    43    44    49
chemistry  47    45    48    47
total      92    88    92    96", header  = T)

# Add column total with row sum
df$total <- rowSums(df);
df;
#          raj sanga rohan rahul total
#physics    45    43    44    49   181
#chemistry  47    45    48    47   187
#total      92    88    92    96   368

Выше также работает, если df является matrix вместо data.frame.


Если вы посмотрите на?rowSums Вы можете видеть, что аргумент x должен быть

массивом двух или более измерений, содержащим числовые, комплексные, целые или логические значения или числовой фрейм данных.

Так что в вашем случае мы должны передать весь data.frame (или matrix) в качестве аргумента, а не определенный столбец (как вы это сделали).

...