gpt4 book ai didi

r - 将函数应用于数组列表

转载 作者:行者123 更新时间:2023-12-02 06:40:38 25 4
gpt4 key购买 nike

这是一个新手问题,但在理解数组列表数据集的应用函数时遇到一些问题。

这是我拥有的数据以及我要执行的操作的一个示例:

> dataset1=array(data1,dim=c(2,10,5))
> dataset2=array(data2,dim=c(2,10,5))
> dataset3=array(data2,dim=c(2,10,5))
> datasets=list(data1=dataset1,data2=dataset2,data3=dataset3)
> str(datasets)
List of 3
$ data1: num [1:2, 1:10, 1:5] 0.101 1.192 0.154 0.911 1.889 ...
$ data2: num [1:2, 1:10, 1:5] 2.84 1.63 1.78 1.24 1.09 ...
$ data3: num [1:2, 1:10, 1:5] 2.84 1.63 1.78 1.24 1.09 ...

我想将0以下的所有值替换为0
for (d in 1:3){
for (n in 1:2){
for (i in 1:10){
datasets[[d]][n,i,][datasets[[d]][n,i,]<=1.5]=0
}
}
}

我想知道我是否可以使用其中一个应用功能?还是对于这种类型的数据集(数组列表),还是应该保留循环方法而忘记其他选项?

最佳答案

具有可复制的数据:

dataset1 = array(rnorm(100),dim = c(2,10,5))
dataset2 = array(rnorm(100),dim = c(2,10,5))
dataset3 = array(rnorm(100),dim = c(2,10,5))
datasets = list(data1 = dataset1, data2 = dataset2, data3 = dataset3)

现在编写一个匿名函数进行常规替换,并在整个列表中应用该函数:
datasets.updated <- lapply(datasets, function(x) {x[x < 1.5] <- 0; x})

由dickoa提供的用于匿名功能的更简洁的方法:
datasets.updated <- lapply(datasets, function(x) ifelse(x < 1.5, 0, x))

关于r - 将函数应用于数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8751954/

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