此问题与stackoverflow的以下页面中提出的问题相关:Ignoring values or NAs in the sample function
问题:我有一个矩阵K(例如1528行)和许多(比如1000)列。许多条目中都有NA。从每列我想以下列方式对40个元素进行采样:如果列中此类元素的总数不小于40,则从非NA元素中随机采样。如果它们小于40(比如= k),那么将是所有k元素和40-k NAs。我尝试了以下代码:
mysample <- function(x){
if(sum(is.na(x))>1488){
sum(x[!is.na(x)])
return(c(x[!is.na(x)],rep(NA,40-sum(x[!is.na(x)]))))
}
return(sample(x[!is.na(x)],40))
}
J=apply(K, 2, mysample)
在第四行中,显示无效的&#39;次&#39;重复中的论点。任何人都可以使代码可行(我希望包含NA,因为我想从中生成40X1000矩阵)
答案 0 :(得分:2)
在rep
函数中,时间参数应为40 - length_of_nona
,40 - sum(!is.na(x))
应为mysample <- function(x){
if(sum(is.na(x))>1488){
# sum(x[!is.na(x)])
return(c(x[!is.na(x)],rep(NA,40-sum(!is.na(x)))))
^ ^
}
return(sample(x[!is.na(x)],40))
}
J=apply(K, 2, mysample)
。没有测试,但我认为这将解决问题:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-mybatis</artifactId>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-boot</artifactId>
</dependency>