小编MAR*_*LOW的帖子

将 R 中的 data.table 中的所有 NA 替换为 0

我有一个data.table有很多列的。有 4 列我想NA用 0 替换。

我有一个可行的解决方案:

  claimsMonthly[is.na(claim9month),claim9month := 0
          ][is.na(claim10month),claim10month := 0
            ][is.na(claim11month),claim11month := 0
              ][is.na(claim12month),claim12month := 0]
Run Code Online (Sandbox Code Playgroud)

然而,这是相当重复的,我想通过使用循环来减少这种情况(但不确定这是否是最聪明的想法?):

  for (i in 9:12){
    claimsMonthly[is.na(paste0("claim", i, "month")), paste0("claim", i, "month") := 0]
  }
Run Code Online (Sandbox Code Playgroud)

当我运行这个循环时,什么也没有发生。我猜是因为约定的回报paste0()"claim12month"所以我得到了in.na("claim12month")。其结果是FALSE尽管我的数据中有这样的事实NA。我想这与引用有关?

这不是我第一次遇到使用paste0()或运行循环的问题data.table,所以我一定在这里遗漏了一些重要的东西。

任何想法如何解决这一问题?

loops r data.table

4
推荐指数
1
解决办法
2107
查看次数

如何仅使用 BIOS 中断在程序集引导加载程序中的硬盘驱动器上创建文件?

我写了一个基本的程序集引导程序来清除屏幕并打印X

[BITS 16]
[ORG 0x7c00]

main:
   mov ax, 0x03
   int 10h

   mov ah, 0x0E
   mov al, 'X'
   int 10h

   jmp $

times 510 - ($-$$) db 0
DW 0xAA55
Run Code Online (Sandbox Code Playgroud)

现在我需要做的是在硬盘上创建一个文件。我知道我可以使用以下代码通过 DOS 中断轻松完成:

outputfile db "myfile.txt"
outhandle  db ?

mov dx, offset outputfile
mov cx, 0
mov ah, 3Ch
int 21h
mov outhandle, ax
Run Code Online (Sandbox Code Playgroud)

但是我没有找到有关使用 BIOS 中断进行文件操作的任何信息。

这可能吗?

assembly bios bootloader

1
推荐指数
1
解决办法
117
查看次数

标签 统计

assembly ×1

bios ×1

bootloader ×1

data.table ×1

loops ×1

r ×1