Вы можете использовать fileWriter
с флагом, установленным на true
, для добавления.
try
{
String filename= "MyFile.txt";
FileWriter fw = new FileWriter(filename,true); //the true will append the new data
fw.write("add a line\n");//appends the string to the file
fw.close();
}
catch(IOException ioe)
{
System.err.println("IOException: " + ioe.getMessage());
}
Я лично испытываю отвращение к ifelse
и склонен вместо этого использовать две строки кода вместо того, чтобы заполнить значение по умолчанию, а затем альтернативу, примененную условно.
Для циклического прохождения всех ваших столбцов вы можете использовать следующий код (я не тестировал его, так как нет данных)
for(i in 1:10){
HRSdata2[,paste0('h',i,'logass')] <- 0
w <- which(HRSdata2[,paste0('h',i,'atotb')] > 0)
HRSdata2[w,paste0('h',i,'logass')] <- HRSdata2[w,paste0('h',i,'atotb')]
}
Этот код выведет ноль для значений NA, если это не так Вы должны заменить:
w <- which(HRSdata2[,paste0('h',i,'atotb')] > 0)
на:
w <- which(HRSdata2[,paste0('h',i,'atotb')] > 0 | is.na( HRSdata2[,paste0('h',i,'atotb')] ) )
Когда вы делаете ifelse(x > 0, log(x), 0)
, R вычисляет log(x)
:
> x <- c(2, -1, 3)
> ifelse(x > 0, log(x), 0)
[1] 0.6931472 0.0000000 1.0986123
Warning message:
In log(x) : NaNs produced
Но в результате вы не получите NaN
, вы получите 0
для значений, соответствующих [ 116].
Это утверждение ifelse
эквивалентно
ifelse(c(TRUE, FALSE, TRUE), c(log(2), log(-1), log(3)), c(0,0,0))
R не отбрасывает вычисления значений второго аргумента, для которого значение первого аргумента равно FALSE
.