NaN, полученные при переносе журнала на числа больше 0 [закрыто]

Вы можете использовать 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());
}
0
задан Emil Krabbe 19 March 2019 в 09:27
поделиться

2 ответа

Я лично испытываю отвращение к 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')] ) )
0
ответ дан Aaron Hayman 19 March 2019 в 09:27
поделиться

Когда вы делаете 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.

0
ответ дан Stéphane Laurent 19 March 2019 в 09:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: