我有一个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,所以我一定在这里遗漏了一些重要的东西。
任何想法如何解决这一问题?
我写了一个基本的程序集引导程序来清除屏幕并打印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 中断进行文件操作的任何信息。
这可能吗?