我有一个大型多维数组(约1900万个元素),其中包含多个不同属性的联合概率。
数组非常稀疏,我只对概率非零的单元格感兴趣。
但是,在筛选数组中的非零元素时,我无法检索筛选值的维度名称(对应于各种属性值)。
以下是一个玩具示例:
array_dim <- c(2,5,5,4)
array_fill <- runif(prod(array_dim))
array_dimnames <- list(
c('strawberry', 'blackberry'),
c('cranberry', 'banana', 'pineapple', 'apple', 'tangerine'),
c('orange', 'blueberry', 'kiwi', 'grapes', 'guava'),
c('plum', 'fig', 'grapefruit', 'lemon')
)
fruits <- array(array_fill, dim=array_dim, dimnames=array_dimnames)
我可以获得与某个标准匹配的单元格的索引值(此处,
> which(fruits %in% fruits[fruits>0.9], arr.ind = TRUE)
[1] 8 23 25 32 33 35 37 76 77 85 90 101 117 121 123 135 154 197
但我无法使用上述索引值并找出它们是什么水果组合,因为在查找特定单元格值时,DIMNAME会被删除:
> fruits[8]
[1] 0.9590207
> fruits[8, drop=FALSE]
[1] 0.9590207
> dimnames(fruits[8])
NULL
> names(fruits[8])
NULL
我尝试将数组转换为data.frame,并使用drop=FALSE
参数:
> fruits.df <- as.data.frame(fruits)
>
> fruits.df[1,2,drop=FALSE]
banana.orange.plum
strawberry 0.4003854
但是添加条件过滤器失败,因为fruits.df[fruits.df
作为最后的手段,我可以构造
array_index -
我还研究了
listaries
包。
提前感谢
我也没有找到直接从数组中获取DIMNAME的简单方法。转换数据结构的简单方法是使用dplyr中的作为_tbl_cube
,并将其转换为data.frame(或data.table)以查看dimnames:
set.seed(3)
array_dim <- c(2,5,5,4)
array_fill <- runif(prod(array_dim))
array_dimnames <- list(
dim1=c('strawberry', 'blackberry'),
dim2=c('cranberry', 'banana', 'pineapple', 'apple', 'tangerine'),
dim3=c('orange', 'blueberry', 'kiwi', 'grapes', 'guava'),
dim4=c('plum', 'fig', 'grapefruit', 'lemon')
)
fruits <- array(array_fill, dim=array_dim, dimnames=array_dimnames)
which(fruits %in% fruits[fruits>0.9], arr.ind = TRUE)
#> [1] 28 54 56 73 74 85 90 115 161 198
fruits[198]
#> [1] 0.9065314
library(dplyr)
arr.cube <- as.tbl_cube(fruits)
tail(as.data.frame(arr.cube))
#> dim1 dim2 dim3 dim4 fruits
#> 195 strawberry pineapple guava lemon 0.7057146
#> 196 blackberry pineapple guava lemon 0.3907374
#> 197 strawberry apple guava lemon 0.8242374
#> 198 blackberry apple guava lemon 0.9065314
#> 199 strawberry tangerine guava lemon 0.4171170
#> 200 blackberry tangerine guava lemon 0.2791320
在这个例子中,水果[198]的名字是黑莓、苹果、番石榴和柠檬。
问题内容: 例 问题,如何获得单一值,例如: 问题答案: 查看您的中的键和缩进: …等等
有人能给我一个解决方案,我可以在单元格为空时读取应用到单元格的样式吗? 谢了。
我有一个带有sheet1 excel文件,该文件的第2行和第10列有一个我需要读取的值。这是我的代码。 获取了cell对象Excel.Range后,我不知道如何读取该单元格的内容。我试着把它转换成数组并在它上面循环,我试着转换成字符串数组等等,我确信这是非常简单的。有没有直接的方法只得到一个字符串的单元格值?
我构建了一个条件,从我的数据框中提取一行: 现在我想从特定列中获取一个值: 但结果,我得到了一个包含一行和一列(即一个单元格)的数据帧。这不是我需要的。我需要一个值(一个浮点数)。我怎样才能在熊猫身上做到这一点?
我构造了一个从数据帧中提取一行条件: 现在我想从一个特定列中取一个值:
问题内容: 我想以一个简单的字符串来获取数值单元格的值。 假设单元格的类型是带有value的数字。现在我无法使用,因为它将引发异常。我也无法使用,因为它会使我退缩。 我想存储在类型为varchar2的db中,所以我只希望字符串中的值。 我无法更改单元格类型,因为它是最终用户的工作,我必须在代码本身中进行处理。 格式化程序也无法正常工作,因为xls … dd:mm,dd:mm:ss,公式等中可能存在