r - 如何更改列表中数据框的某些元素的名称
问题描述
我在一个列表中有几个数据框,以便我可以一次将函数应用于每个数据框;下面是一些模拟数据
df1 <- data.frame(spp = c("Rubsp", "Rusp", "Cest", "Ceor", "Dagl"),
julian = c(60, 70, 80, 90, 100))
df2 <- data.frame(spp = c("Sosp", "Spsp", "Cest", "Umsp", "Dagl"),
julian = c(60, 70, 80, 90, 100))
df3 <- data.frame(spp = c("Syal", "Syla", "Cest", "Umsp", "Ceor"),
julian = c(60, 70, 80, 90, 100))
spp_list <- list(df1=df1, df2=df2, df3=df3)
我正在尝试创建一个函数来更改数据框中某些物种名称的一些拼写错误。例如,“Rubsp”需要是“Rusp”。下面是我对这个功能的尝试。
change_spp <- function(df){
(df[["spp"]] == "Rubsp") -> "Rusp"
(df[["spp"]] == "Sosp") -> "Spsp"
(df[["spp"]] == "Syal") -> "Syla"
return(df)
}
spp_list <- lapply(spp_list, change_spp)
当我将此函数应用于我的数据框列表时,没有任何变化。我无法找出正确的语法来修复这些名称。
使用 R 版本 4.0.2,Mac OS X 10.13.6
解决方案
尝试这个:
#Function
change_spp <- function(df){
df$spp[df$spp== "Rubsp"] <- "Rusp"
df$spp[df$spp== "Sosp"] <- "Spsp"
df$spp[df$spp== "Syal"] <- "Syla"
return(df)
}
#Apply
spp_list <- lapply(spp_list, change_spp)
输出:
spp_list
$df1
spp julian
1 Rusp 60
2 Rusp 70
3 Cest 80
4 Ceor 90
5 Dagl 100
$df2
spp julian
1 Spsp 60
2 Spsp 70
3 Cest 80
4 Umsp 90
5 Dagl 100
$df3
spp julian
1 Syla 60
2 Syla 70
3 Cest 80
4 Umsp 90
5 Ceor 100
您的方法需要这样的东西才能工作(索引):
#Function
change_spp <- function(df){
df$spp[df[["spp"]] == "Rubsp"] <- "Rusp"
df$spp[df[["spp"]] == "Sosp"] <- "Spsp"
df$spp[df[["spp"]] == "Syal"] <- "Syla"
return(df)
}
#Apply
spp_list2 <- lapply(spp_list, change_spp)
相同的输出。
推荐阅读
- ios - 核心数据对象保存没有错误,但数据检索方法不会立即显示保存的结果
- sql - DB2 SQLPL - 无法退出无限循环
- python - 错误:在 Python 3.8 (Windows) 上安装 Kivy 时命令出错,退出状态为 255
- python - 有没有办法从列表中获取一个元素并以变量的名称使用它?
- macos - 在 macOS 上启动 Minikube 时权限被拒绝
- r - 地图图例所需的 R 代码帮助不在正确的位置
- python - woocommerce rest api python 获取产品
- c# - 如何使用 nim-lang 中的 ImportDll 在 DotNet Core 中调用字符串函数
- node.js - 在节点 js 中使用正则表达式拆分字符串
- scikit-learn - Python scikit svm“未安装或提供词汇”