我有一个包含因子和字符的数据框。我想用列前缀" 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)
答案 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)