gpt4 book ai didi

r - 将列表转换为多个数据框,以便能够仅将每个数据框的一列转换为数字数据

转载 作者:行者123 更新时间:2023-12-02 01:46:22 25 4
gpt4 key购买 nike

我是 R 编程的新手,我已经遇到这个问题好几天了。我从拆分文件创建的列表开始。此列表包含大量数据框。我能够在其中执行一些操作,比如用 lapply 替换一些数据到 NA。但是现在,我卡住了,不知道如何只转换这个巨大列表中的这个数据框的一列。

这是我文件中的一个示例:

d1 <- data.frame(foo = c("a", "b", "c", "d", "e"), bar = as.character(c(4.27, 5.68, 5.52, 5.20, 3.67)))
d2 <- data.frame(bla = c("a", "e", "c"), blu = as.character(c(10.14, 9.88, 10.01)))
d3 <- data.frame(lol = c("p", "s", "q", "r"), pum = as.character(c(5.96, 1.22, -1.61, 5.05)))
d1[, 2] <- as.character(d1[, 2])
d2[, 2] <- as.character(d2[, 2])
d3[, 2] <- as.character(d3[, 2])
file <- list(d1, d2, d3)

这会产生这样的结果:

[[1]]
foo bar
1 a 4.27
2 b 5.68
3 c 5.52
4 d 5.2
5 e 3.67

[[2]]
bla blu
1 a 10.14
2 e 9.88
3 c 10.01

[[3]]
lol pum
1 p 5.96
2 s 1.22
3 q -1.61
4 r 5.05

我想得到这样的结果:

[[1]]
foo bar
5 e 3.67
1 a 4.27
4 d 5.2
3 c 5.52
2 b 5.68

[[2]]
bla blu
2 e 9.88
3 c 10.01
1 a 10.14

[[3]]
lol pum
3 q -1.61
2 s 1.22
4 r 5.05
1 p 5.96

订购后,我将不得不在每个数据帧上提取特定的行,但我想如果我了解如何执行此操作,我也许能够做到这一点。

经过多次尝试,并在这里找到了一个线程,我终于能够做到这一点:

for(i in 1:length(names(file))){
assign(paste("df", i, sep = ""), file[[i]])
}

这段代码让我在使用 split 函数后分离了数据帧。现在我想在这个 for 循环中添加一种将我在一列中的字符数据重新转换为数字数据的方法。我试图在 for 循环中使用这样的代码:

df[, 2] <- sapply(df[,2], as.numeric)

但我得到一个错误:'Closure' 类型对象不是一个子集。

有人可以帮忙吗?如果有人能告诉我一个更简单的替代方案(如果有的话),我将非常欢迎。

最佳答案

我觉得你想要

lapply(file, function(x) {
x[[2]] <- as.numeric(x[[2]])
x[order(x[[2]]), ]
})

解释:

  • lapply在列表上迭代一个函数
  • file是您的 list ,我们正在处理的 list
  • function(x)是一个“匿名”函数,其中 x将是 file 的每个单独元素
  • x[[2]] <- as.numeric(x[[2]])将第二列转换为数字
  • x[order(x[[2]]), ]按第二列对数据框的行进行排序。

关于r - 将列表转换为多个数据框,以便能够仅将每个数据框的一列转换为数字数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25490632/

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