gpt4 book ai didi

r - 将 colClasses 分配给长度未知的数据框中的某些列

转载 作者:行者123 更新时间:2023-12-02 03:41:30 25 4
gpt4 key购买 nike

我有许多数据文件正在以 CSV 格式读入 R。我想指定这些数据文件中某些列的 colClasses,但数据框的长度未知,因为它们包含物种丰度数据(因此,物种数量不同)。

有没有一种方法可以使用 read.csv 中的 colClasses 将前 10 列之后的每一列设置为数字(因此,ncol[10]:length(df))?

这是我尝试过的,但无济于事:

df <- read.csv("file.csv", header=T, colClasses=c(ncols[10], rep("numeric", ncols)))

如有任何帮助,我们将不胜感激。

谢谢,保罗

最佳答案

我会首先使用 count.fields 来确定数据中有多少列。您可以在第一行执行此操作。

然后,您可以从那里为您的 colClasses 使用 rep

这很糟糕,但有效。这是一个例子:

前几行只是为了在您的工作区中创建一个虚拟 csv 文件,因为您没有提供可重现的示例。

X <- tempfile()
cat("A,B,C,D,E,F",
"1,2,3,4,5,6",
"6,5,4,3,2,1", sep = "\n", file = X)

这就是真正的答案开始的地方。在下面的两个地方用您的实际文件名替换“x”。 -2 是因为我们已经考虑了两列。

Y <- read.csv(X, colClasses = c(
"numeric", "numeric", rep("character", count.fields(textConnection(
readLines(X, n=1)), sep=",")-2)))

# Y <- read.csv("file.csv", colClasses = c(
# "numeric", "numeric", rep(
# "character", count.fields(readLines(
# "file.csv", n = 1), sep = ",")-2)))

str(Y)
# 'data.frame': 2 obs. of 6 variables:
# $ A: num 1 6
# $ B: num 2 5
# $ C: chr "3" "4"
# $ D: chr "4" "3"
# $ E: chr "5" "2"
# $ F: chr "6" "1"

关于r - 将 colClasses 分配给长度未知的数据框中的某些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19689507/

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