gpt4 book ai didi

r - 如何基于grep覆盖R中的变量

转载 作者:行者123 更新时间:2023-12-04 10:53:08 24 4
gpt4 key购买 nike

我有一个简单的数据框:

> var_body_part <- c("eye and nose", "eye", "eye and ear", "eye and mouth", "foot", "foot", "ear", "ear", "foot", "mouth")

> var2 <- c("bla", "bla", "bla", "bla", "bla", "bla", "bla", "bla", "bla", "bla")

> temp_df <- data.frame(var_body_part, var2)

所以我的数据是:

> temp_df
var_body_part var2
1 eye and nose bla
2 eye bla
3 eye and ear bla
4 eye and mouth bla
5 foot bla
6 foot bla
7 ear bla
8 ear bla
9 foot bla
10 mouth bla

每次找到“eye”我都想用 HEAD 替换该行即(见前 4 行)

   var_body_part var2
1 HEAD bla
2 HEAD bla
3 HEAD bla
4 HEAD bla
5 foot bla
6 foot bla
7 ear bla
8 ear bla
9 foot bla
10 mouth bla

这应该很容易...我选择受转换影响的行

temp_df$var_body_part[grep("eye", temp_df$var_body_part) ] 

但是我找不到正确的语句来用正确的值“HEAD”替换它们。

到目前为止,通过我的尝试,我得到了很多

invalid factor level, NA generated

有人可以帮忙吗?

最佳答案

问题实际上是在创建 temp_df 时列被转换为 factor。只需使用 stringsAsFactors = FALSE 就可以了:

temp_df <- data.frame(var_body_part, var2, stringsAsFactors = FALSE)
temp_df$var_body_part[grep("eye", temp_df$var_body_part)] <- "HEAD"

如果要使用因子,可以在var_body_part的层级上加上“HEAD”:

temp_df <- data.frame(var_body_part, var2, stringsAsFactors = TRUE)
levels(temp_df$var_body_part) <- c(levels(temp_df$var_body_part), "HEAD")
temp_df$var_body_part[grep("eye", temp_df$var_body_part)] <- "HEAD"

关于r - 如何基于grep覆盖R中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53804711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com