在R数据.frame中添加一个新列将转换所有其他列的类型



我遇到了一个无法解释的问题:我有一个数字列的data.frame,以任何方式添加一个新列($operator,cbind…(会将所有其他列的类型更改为字符

> ab_dt = data.frame(ab_mat)
> unique(apply(ab_dt, 2, class))
[1] "numeric"
> a = meta[rownames(ab_dt), "Location"]
> class(a)
[1] "factor"
> ab_dt$Location = a
> unique(apply(ab_dt, 2, class))
[1] "character"

有人知道为什么会发生这种事吗?

它与如何计算类有关。我建议使用sapply。使用tibble而不是data.frame可以让您在打印中始终跟踪列类:

data <- data.frame(
a = factor("foo", levels = c("foo", "bar")),
b = "baz"
)
data
#>     a   b
#> 1 foo baz
unique(apply(data, 2, class))
#> [1] "character"
sapply(data, class)
#>           a           b 
#>    "factor" "character"
tibble::as_tibble(data)
#> # A tibble: 1 x 2
#>   a     b    
#>   <fct> <chr>
#> 1 foo   baz
```

最新更新