没有NA的样本

时间:2016-07-16 03:22:55

标签: r

此问题与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矩阵)

1 个答案:

答案 0 :(得分:2)

rep函数中,时间参数应为40 - length_of_nona40 - 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>