【发布时间】:2019-01-10 19:24:28
【问题描述】:
在矩阵中,我需要按以下方式减去行:row1 减去剩余的每一行;然后 row2 减去剩余的每一行。我需要对矩阵中的每一行执行此操作。
我遇到了三个问题。首先,虽然我能够为 row1 减去剩余的每一行编写一个 for 循环并打印结果,但我不确定如何继续循环以继续移动到 row2 减去剩余的行等到最后一行减去剩余的行,如似乎没有必要为每一行编写循环。
问题二,在执行以下减法时,例如row2 减去剩余的行,我需要在运行循环时跳过从自身减去 row2。当我尝试为 row2 减去剩余行编写 for 循环时,打印的结果总是显示一行,其中 row2 也从自身中减去。我不知道如何避免这种情况。
问题三,减行时,例如row2减row1;第 2 行减去第 3 行;第 2 行减去第 4 行等,我想打印摘要:如果每次减法,每两行之间的差异为零。我将 if 语句包含在下面的代码中并且它完成了这项工作,但我只设法将它用于比较单行与剩余行,所以我想知道如何将它应用于应该与之比较的每个后续行剩余的行。
提前谢谢你
library(dplyr)
# Simulate matrix of integers
set.seed(1)
df <- matrix(sample.int(5, size = 3*5, replace = TRUE), nrow = 3, ncol = 5)
print(df)
df <- tbl_df(df) # tabulate as dataframe
# For Loop for row 1
for(i in 2:nrow(df)){
result = df[1,] - df[i,]
print(result)
}
# For Loop for row 2
for(i in 1:nrow(df)){
result = df[2,] - df[i,]
print(result)
}
# Trying to print results only for those pairs of rows, between which the
difference is zero
for(i in 1:nrow(df)){
result = df[2,] - df[i,]
if (rowSums(result) == 0){
print("Duplicates present")
} else {
print("No duplicates")
}
}
【问题讨论】:
标签: r for-loop if-statement