R使用前缀从因子到字符更改列

时间:2018-03-08 20:03:58

标签: r string lapply factors

我有一个包含因子和字符的数据框。我想用列前缀" ID _"更改列。从因素变为字符。

我尝试了下面的内容,但它将整个数据框更改为字符,我只想用" ID _"更改字符串。我不知道有多少" ID _"将在数据框中结束(这是一个更大的函数的一部分,它将循环跨越数据帧,具有各种数量的" ID _")

###Changes the whole dataframe to character rather than only the intended columns

df.loc[] <- lapply(df.loc[, grepl("ID_", colnames(df.loc))], as.character)

3 个答案:

答案 0 :(得分:3)

问题是您使用df.loc[] <-分配给整个数据框。试试这个:

my_cols <- grepl("ID_", colnames(df.loc))
df.loc[my_cols] <- lapply(df.loc[my_cols], as.character)

答案 1 :(得分:3)

这是一个整齐的解决方案:

food <- data_frame(
  "ID_fruits" = factor(c("apple", "banana", "cherry")),
  "vegetables" = factor(c("asparagus", "broccoli", "cabbage")),
  "ID_drinks" = factor(c("absinthe", "beer", "cassis"))
)

food %>%
  mutate_at(vars(starts_with("ID_")), as.character)

```

答案 2 :(得分:0)

您也可以使用ifelse

执行此操作
df[] <- ifelse(grepl("^ID_", colnames(df)), lapply(df, as.character), df)