use*_*rJT 22 r dataframe tidyverse
考虑具有混合数据类型的data.frame.
出于奇怪的目的,用户需要将所有列转换为字符.怎么做得最好?解决问题的整合尝试是这样的:
map(mtcars,as.character) %>% map_df(as.list) %>% View()
c2<-map(mtcars,as.character) %>% map_df(as.list)
Run Code Online (Sandbox Code Playgroud)
当我打电话时str(c2)
,应该说一个包含所有字符的tibble或data.frame.
另一种选择是对一些参数设置write.csv()
或write_csv()
实现生成的文件输出同样的事情.
Jak*_*son 38
你也可以使用dplyr::mutate_all
.
library(dplyr)
mtcars %>%
mutate_all(as.character)
Run Code Online (Sandbox Code Playgroud)
Sam*_*rke 14
mutate_all
然后重新生成data.frame lapply
将导致data.frame的属性发生变化.如果需要保留与基础data.frame关联的row.names,labels或其他属性,请尝试:
x[, ] <- lapply(x[, ], as.character)
Run Code Online (Sandbox Code Playgroud)
这会将列转换为字符类,保留data.frame的属性.
例
x <- mtcars
attr(x, "example") <- "1"
Run Code Online (Sandbox Code Playgroud)
仅在下面的最后一种情况下example
保留了属性:
x %>%
mutate_all(as.character) %>%
attributes()
data.frame(lapply(x, as.character)) %>%
attributes()
x[, ] <- lapply(x[, ], as.character)
attributes(x)
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的输入始终是单列data.frame,x[, ]
则会返回向量,而不是data.frame.要解决此问题,请参阅如何从data.frame中提取单个列作为data.frame?.
归档时间: |
|
查看次数: |
23450 次 |
最近记录: |