Он делает это, потому что input.nextInt();
не фиксирует новую строку. вы могли бы сделать, как и другие, добавив под ним input.nextLine();
. В качестве альтернативы вы можете сделать это в стиле C # и разобрать nextLine на целое число так:
int number = Integer.parseInt(input.nextLine());
Выполнение этого работает так же хорошо, и оно сохраняет строку кода.
Вы можете использовать dplyr
для этого:
library(dplyr)
df = data.frame(
user = c("a", "a", "b", "b", "c"),
v1 = c(1, 1, 1, 2, 1),
v2 = c(0, 0, 0, 0, 1),
v3 = c(0, 1, 0, 3, 1))
group_by(df, user) %>%
summarize(v1_sum = sum(v1),
v2_sum = sum(v2),
v3_sum = sum(v3))
Если вы не знакомы с нотой %>%
, это в основном как трубопровод от bash. Он выводит результат из group_by()
и помещает его в summarize()
. То же самое можно было бы сделать так:
by_user = group_by(df, user)
df_summarized = summarize(by_user,
v1_sum = sum(v1),
v2_sum = sum(v2),
v3_sum = sum(v3))
В базе R,
D <- matrix(c(1, 0, 0,
1, 0, 1,
1, 0, 0,
2, 0, 3,
1, 1, 1),
ncol=3, byrow=TRUE, dimnames=list(1:5, c("v1", "v2", "v3")))
D <- data.frame(user=c("a", "a", "b", "b", "c"), D)
aggregate(. ~ user, D, sum)
Возвращает
> aggregate(. ~ user, D, sum)
user v1 v2 v3
1 a 2 0 1
2 b 3 0 3
3 c 1 1 1