У меня есть 2000 строк данных для 4000 столбцов. То, что я пытаюсь сделать, - сравнить каждую строку с остальными строками и посмотреть, насколько они похожи на разные столбцы/полные столбцы.R объединенная производительность петли
То, что я до сих пор выглядит следующим образом:
for (i in 1:nrow(data))
{
for (j in (i+1):nrow(data))
{
mycount[[i,j]] = length(which(data[i,] != data[j,]))
}
}
Есть 2 проблемы с этим, J не начинается с + 1 (который, вероятно, является основной ошибкой) Основная проблема однако время, которое он потребляет, занимает много времени ...
Может ли кто-нибудь предложить более подходящий способ достижения одного и того же результата, в результате чего процентное соотношение каждого ряда соответствует другим строкам?
Вот пример данных и то, что я хочу добиться:
Выход должен быть что-то вроде:
mycount[1,2] = 2 (S# and var3 columns are different)
mycount[1,3] = 2 (S# and var1 columns are different)
mycount[1,4] = 2 (S# and var4 columns are different)
mycount[2,3] = ...
mycount[2,4] = ...
mycount[3,4] = 3 (S#, var1 and var 4 are different)
Так что вы хотите сравнить каждую строку в строку непосредственно под ней, чтобы увидеть, если он идентичен ? –
Не начинающийся с i + 1 из-за 'i + 1: nrow (data)', он читает это как 'i + 1: nrow (data)' вам нужно добавить скобки: '(i + 1): nrow (данные) '. –
Не могли бы вы добавить [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? – fridaymeetssunday