无法在R

时间:2018-07-24 17:03:49

标签: r

我正在努力将字符向量转换为R中的数字。我使用以下命令从csv导入数据框:

a = read.csv('myData.csv', header=T, stringsAsFactors=F)

我的一个因素fac1是数字的向量,但包含“ na”和“ nr”的某些实例。因此,typeof(a$fac1)返回"character"

我创建了一个没有“ na”和“ nr”条目的新数据框

k = a[a$fac1 != "na" & a$fac1 != "nr", ]

然后我尝试使用以下方法将fac1转换为数字:

k$fac1_num = as.numeric(k$fac1)

问题在于这不起作用,因为typeof(k$fac1_num)现在返回"double"而不是"numeric"

有人可以提出修复建议/指出我做错了什么吗?预先感谢!

2 个答案:

答案 0 :(得分:0)

尝试强制转换为数字:

a = read.csv('myData.csv', header=T, stringsAsFactors=F)
a$fac1_num = as.numeric(a$fac1)

如果您需要子集(通常不需要这样做,我建议您不要执行常规操作,因为知道其他列值告诉您数据背后的“真实性”可能会有所帮助),那么只需:

k <- a[ !is.na(a$fac1_num) , ]

这样,您仍将在a数据对象中保留原始字符值,并可以根据需要检查其值。对“数字”的正确测试是is.numeric

答案 1 :(得分:0)

尝试在模式中使用 sapply

import CoreData

@objc(SectionC)
public class SectionC: NSManagedObject {
  @nonobjc public class func fetchRequest() -> NSFetchRequest<SectionC> {
        return NSFetchRequest<SectionC>(entityName: "SectionC")
    }

    @NSManaged public var id: Int16
    @NSManaged public var moduleId: Int16
}


struct Section: Codable {
    let id, moduleId: Int
}

static func save(sections: [Section], id: Int){
    for section in sections {
        if isExist(id: section.id, entity: SectionC.entityName){
            return
        }
        let sectionC = SectionC(context: context)
        sectionC.moduleId = Int16(id)
        sectionC.id = Int16(section.id)

        saveContext()
    }
}