Sql server R-测试Data.Frame单元格是否为NULL/空

Sql server R-测试Data.Frame单元格是否为NULL/空,sql-server,r,boolean-expression,Sql Server,R,Boolean Expression,我正在通过外部脚本存储过程将数据从SQL Server 2016传递到R进行处理 根据数据帧中位置[I,11]处的单元格是否具有整数值,我想执行e或不执行e for(i in 1:2){ if(d1[i,11]==""){ d2[i,1]<-d1[i,1] d2$Ledger<-d1[i,2] d2$Account<-d1[i,3] d2$Title<-d1[i,4] d2$Actua

我正在通过外部脚本存储过程将数据从SQL Server 2016传递到R进行处理

根据数据帧中位置[I,11]处的单元格是否具有整数值,我想执行e或不执行e

for(i in 1:2){
    if(d1[i,11]==""){
        d2[i,1]<-d1[i,1]
        d2$Ledger<-d1[i,2]
        d2$Account<-d1[i,3]
        d2$Title<-d1[i,4]
        d2$ActualTitle<-d1[i,5]
        d2$AccountNumber<-d1[i,6]
        d2$Sortcode<-d1[i,7]
        d2$PostCode1<-d1[i,8]
        d2$PostCode2<-d1[i,9]
        d2$AddressName<-d1[i,10]
        d2$MatchedID<-d1[i,11]
    }
for(1:2中的i){
如果(d1[i,11]=“”){

d2[i,1]进一步的测试表明,R中存储的值是NA,并且使用函数is.NA(表达式)生成布尔返回

for(i in 1:2){
    if(is.na(d1[i,11])){
        d2[i,1]<-d1[i,1]
        d2$Ledger<-d1[i,2]
for(1:2中的i){
if(is.na(d1[i,11])){

d2[i,1]最好的方法是不使用循环。当数据帧的大小很大时,向量运算更好

要检查某物是否为
,请使用:

if(is.na(item))
如果项为
,则返回
TRUE
,否则返回
FALSE
。SQL中任何缺少的值都将在R中表示为
。同样,您可以使用
is.integer(项)
检查某个值是否为整数

然后,您可以使用以下选项对数据帧的列进行选择性操作:

dataframe$columnname[which(is.na(dataframe$column))] <- new_value
> dataframe$columnname <- ifelse(is.na(dataframe$column), value_for_if_satisfied, value_for_else_satisfied)