我正在努力将字符向量转换为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"
有人可以提出修复建议/指出我做错了什么吗?预先感谢!
答案 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()
}
}