gpt4 book ai didi

r - 将字符串转换为与另一个对象相同的类型

转载 作者:行者123 更新时间:2023-12-01 02:46:57 26 4
gpt4 key购买 nike

我有一个字符串,我想将它转换为与另一个对象相同的类型。你可以假设这个对象是一个向量。例如,给定一个字符串 "50" , 和一个目标向量 1:10 , 我要 "50"转换为整数 50 .我想知道是否有一种通用的方法来进行转换。如果我知道要将其转换为哪种类型,这很简单,例如我可以使用 as.numeric()如果我希望它是一个数字。

这个问题的背景是:我想提供一个图形用户界面,以便用户可以编辑表格中的值。他们编辑一个单元格后,我会得到一个字符串,我知道原始数据(通常是矩阵或数据框)。我想用这个新值更新原始数据。我不能简单地做 data[i, j] <- value因为value是一个字符串。

我可以枚举一些最常见的类型(例如数字、字符、因子、日期...)并使用 as.*()进行转换,但如果有现有的通用方法,我宁愿不要这样做。对于日期(时区、原产地)和因素(可能会增加一个新级别),事情可能有点棘手。

最佳答案

(你现在可能已经找到了解决这个问题的方法,但无论如何我都会试一试......)

我检查了 R 文档,发现 base::as(object, Class) 是通用的方法。但是,默认的强制转换方法是有限的,目前没有默认方法将 Character 类强制转换为 Date 类,也没有默认方法将 Factor 类转换(您可以通过 methods::showMethods("coerce")。但是,您可以使用 methods::setAs() 设置自定义方法,这超出了我的能力。

以我有限的编程知识,我可能会使用以下方式来处理这个问题:

assign_target_class = function (input_vector, target_vector){
is.date = function(x) inherits(x, 'Date')
if (is.date(target_vector)) {vector_class <- 'Date'}
else if (base::is.factor(target_vector)) {vector_class <- 'Factor'}
else {vector_class <- class(target_vector)}
input_vector = as(input_vector, vector_class)
input_vector
}

附言如果目标向量的日期变量尚未设置为 Date,我们可以将 is.date 替换为此参数:

is.convertible.to.date <- function(x) !is.na(as.Date(as.character(x), 
tz = 'UTC', format = '%Y-%m-%d'))

关于r - 将字符串转换为与另一个对象相同的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38641980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com