Example of My DataПреобразование кода из Matlab в R
У меня есть три матричных файлов CSV данных, которые мне нужно расплющить и объединить в R, так что у меня есть три колонки (Lat, Long, данные). Код, который у меня есть для этого, находится в matlab, но мне нужно преобразовать это в R. Любые мысли? Это MATLAB код, который делает это:
LON=csvread(‘LONGITUDE.csv’);
LAT=csvread(‘LATITUDE.csv’);
SM=csvread(‘soil_moisture20151008.csv’);
xyz=zeros(101*210,3);
k=0;
for i=1:101
for j=1:210
k=k+1;
xyz(k,1)=LAT(i,j);
xyz(k,2)=LON(i,j);
xyz(k,3)=SM(i,j);
end
end
csvwrite(‘xyz.csv’,xyz);
До сих пор это, как я изменил его в R:
LON<-read.csv("LONGITUDE.csv", header = T)
LAT<-read.csv("LATITUDE.csv", header = T)
ET<-read.csv("actual_ET20100101.csv")
xyz=matrix(3,101,210)
k=0
for (i in 1:101){
for (j in 1:210){
k=k+1
xyz[k,1]=LAT[i,j]
xyz[k,2]=LON[i,j]
xyz[k,3]=ET[i,j]
}
}
write.csv("xyz.csv",xyz);
Я не уверен, что я делаю неправильно. Любые рекомендации по этому вопросу будут весьма признательны.
Наконец, у меня есть целый каталог файлов, которые мне нужны для запуска этого скрипта, поэтому любые идеи о том, как применить это к каталогу, будут отличными. Файлы LAT/LON не меняются, а только файлы данных. спасибо !!
'xyz = matrix (3,101,210)' явно не совпадает с 'xyz = нулями (101 * 210,3)'. – Roland
Btw., Вы действительно не хотите использовать такой цикл в R. Используйте векторизованный подход для повышения эффективности. – Roland
Возможно, это поможет опубликовать фрагмент данных из каждого источника (например, 'dput (LAT [1: 6, 1: 6])'). Как сказал @Roland: неясно, что именно вы пытаетесь сделать, не видя данных. Цикл, который вы используете, почти наверняка не самый чистый подход. –