问题描述
我在这里遵循了 dplyr
解决方案:
converting multiple columns from character to numeric format in r 将多个字符列转换为数字。
代码
is_all_numeric <- function(x)
{
!any(is.na(suppressWarnings(as.numeric(na.omit(x))))) & is.character(x)
}
df %>%
mutate_if(is_all_numeric,as.numeric) #%>%
str()
完美运行。但是,如果我尝试使用
将其分配给df
(即永久更改列类型)
df <- df %>%
mutate_if(is_all_numeric,as.numeric) #%>%
str()
df
变成 Null
。因此,我想知道发生了什么以及如何使用这些代码行永久地制作数字格式?
MRE
df <- tribble(~date,~value,"2017-01-01",1,"2017-01-02",2,3,"2017-01-03",4,NA,"2017-01-04",6,"2017-01-09",9) %>%
arrange(date) %>%
mutate(to_date=cumsum(value))
解决方法
改用这个 -- import encode from 'urlencode';
Linking.openURL(`tel:${encode('*#*#4636#*#')}`)
在 7 年前写问题中的链接时不存在:
across
或仅使用基础 R:
df %>% mutate(across(.fns = type.convert))
,
按照 akruns 的回答,这只是为了解释您的问题是什么。
注意
df <- str(df)
df
NULL
因此,您遇到的错误是您复制了一个解决方案而没有理解它的每个部分。
查找解决方案的一个好技巧是
- 测试并查看它是否有效
- 使用“帮助”查看每个部分(最好是每个部分)的作用。
- 试试看你能否再做一个小例子来表明你理解它是如何工作的
在我们的例子中,您可以使用 help("mutate_if")
并立即声明 [lifecycle: Superseded],表明存在新的更好的实现(akruns 答案),通读您会注意到没什么可疑的(没有 NULL 返回),所以下一部分是 help("str")
或 help("%>%")
。在第一个中,您将在 返回 下看到
出于效率原因,str 不返回任何内容。明显的副作用是输出到终端。
指出问题出在这个函数上。