我正在尝试创建5个光栅文件,并使用单独的名称编写每个光栅文件。到目前为止,我已成功实现了这一目标:
c=5
for (i in 1:c){
z<-RFsimulate(x=x,y=y,grid=TRUE,model = model,maxGB=4.0)
a<-raster(z)
projection(a) <- "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
writeRaster(raster(a),filename="raster[i].tif")
}
但我在工作目录中只找到一个光栅文件(光栅1)。我以为我会有五个光栅文件名称raster1,raster2 ..... raster5。任何人都可以帮我解决我的代码有什么问题吗?
由于
答案 0 :(得分:2)
这是一个非常基本的R问题。你应该用简单的循环练习一下。使用a
语句查看发生了什么。请注意,您创建对象"raster[i].tif"
但不使用它。 i
是一个字符串,它与迭代器n <- 5
for (i in 1:n){
z <- RFsimulate(x=x,y=y,grid=TRUE,model = model,maxGB=4.0)
a <- raster(z, crs="+proj=longlat +datum=WGS84")
f <- paste0('raster', i, '.tif')
writeRaster(a, filename=f)
}
无关。这是一个解决方案:
domain
答案 1 :(得分:2)
R没有自动字符串插值。如果您想将filename
的值放入 ...
projection(a) <- ...
filename <- gsub("INDEX", i, "raster_INDEX.tif")
writeRaster(raster(z), filename=filename
}
字符串中,则需要明确替换它。相反,试试这个:
gsub
此代码使用"INDEX"
函数将值i
替换为传递的字符串paste
,并返回修改后的字符串。
您也可以使用 filename <- paste("raster_", i, ".tif", sep="")
final ParseUser currentUser = ParseUser.getCurrentUser();
final String userName = ParseUser.getCurrentUser().getUsername();
ParseUser.logInInBackground(userName, oldPass, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException e) {
if (user != null) {
if (et.length() < 6)
Toast(getActivity(), "Password is short, Min char 6", Toast.LENGTH_LONG).show();
else {
currentUser.setPassword(newPass);
currentUser.saveInBackground();
ParseUser.logOut();
ParseUser.logInInBackground(userName, newPass, new LogInCallback() {
@Override
public void done(ParseUser parseUser, ParseException e) {
if (e == null) {
Toast(getActivity(), "Password change", Toast.LENGTH_LONG).show();
} else
Toast(getActivity(), "Network Error", Toast.LENGTH_LONG).show();
}
});
}
} else {
new CustomToast(getActivity(), "Old Password is incorrect", Toast.LENGTH_LONG);
}
}
});