gpt4 book ai didi

使用BERT接口(interface)将缺失值的excel数组读入R

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

我正在使用 BERT(Excel/R 接口(interface))将 R 函数实现到 Excel 中。当将诸如 eigen 之类的函数应用于数字数组时,它可以正常工作,但如果 Excel 数组中缺少值/字符串,则会出现错误。我想在 R 函数中(而不是在 Excel 中)删除具有非数字数据的数组的列(或行)。问题当然是当数组只有数字但如果 Excel 数组中有非数字数据时,BERT 会为 R 提供一个矩阵。所以基本上我想将该 R 列表更改为在正确位置缺少值的等效 R 数据框。

所以如果在EXCEL中我有

1 2
3 4

在范围 (A1:B2) 中,我在 R 中定义了这个函数。
EigenValues <- function(mat) { 
print(mat)
print(mode(mat))
E<- eigen(mat)
E$values
}

在 Excel 中,这工作得很好,R 控制台向我显示 mat 是一个矩阵。
如果在 Excel 的单元格 A1 中我有一个空白值,则 R 将 mat 描述如下:
[,1] [,2]
[1,] NA 2
[2,] 3 4
[1] "list"

显然我在 Excel 中遇到错误。所以我想删除我有 NA 的行(或列)。我进行了很多搜索,但没有发现任何适用于那种列表的东西。例如。这个, Converting nested list to dataframe ,使用 rbind.list 函数,不起作用。

使用 dplyr 和 rbind_all 也不起作用。我怀疑这是因为我在每一行或每一列中有不同数量的缺失值。

这个 How to convert a list consisting of vector of different lengths to a usable data frame in R?不起作用,因为缺失值不一定在每行的末尾。
rbind.fill(Reduce(unlist, mat)) 

只会产生一个 NA。

最佳答案

如果其中一个矩阵元素包含错误数据(NA 值或缺失数据),则 BERT 将输入矩阵强制转换为列表。
但是输入列表仍然有 dim属性,因此可以将其强制转换回矩阵。然后,您可以使用函数 complete.cases() 删除包含错误数据的行和列。 .以下功能对我有用:

EigenValues <- function(mat) {
mat <- matrix(unlist(mat), nrow=dim(mat)[1])
complete_rows <- complete.cases(mat)
complete_cols <- complete.cases(t(mat))
mat <- mat[t(complete_rows), t(complete_cols)]
E <- eigen(mat)
E$values
}

关于使用BERT接口(interface)将缺失值的excel数组读入R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42331042/

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