A <- data.frame(v=character(),m=numeric()) for(i in colnames(df)){missing<-sum(df[[i]]=="") append(A$v,i) append(A$m,missing)},目的是将数据框各变量的空值数放入数据框A中,请问有什么问题
时间: 2024-02-17 20:01:17 浏览: 29
在你提供的代码中,有以下问题:
1. `missing`虽然可以计算出每个变量中的缺失值数量,但是使用`df[[i]]==""`判断缺失值是不太准确的。因为缺失值可以是`NA`、`NaN`、空格或空字符串等,使用`df[[i]]==""`只能判断空字符串的缺失值。
2. 在使用`append()`函数时,没有将计算出的缺失值数量添加到A中,而是将变量名和`missing`添加到了A中。这时,A中的变量名和`missing`已经无法用来计算缺失值的数量了。
如果你想要将数据框df各变量的空值数放入数据框A中,可以使用以下代码:
```R
A <- data.frame(v=colnames(df), m=numeric())
for(i in colnames(df)){
missing <- sum(is.na(df[[i]]) | df[[i]]=="")
A[A$v == i, "m"] <- missing
}
```
这里将A定义为两列,一列是变量名,一列是缺失值数量。在for循环中,使用`is.na()`函数和`df[[i]]==""`条件语句来判断变量中的缺失值数量,然后将计算得到的缺失值数量添加到A中。
相关问题
A <- data.frame(v=character(),m=numeric()) for(i in colnames(df)){missing<-sum(df[[i]]=="") append(A$v,i) append(A$m,missiong)},运行完后 为什么A是个空的数据框
根据你提供的代码,A是一个空数据框,因为在第一行中定义了A为一个没有任何行和列的数据框,即使在for循环中使用append()函数向A中添加数据,也不会改变A的结构。如果你希望A成为一个与df相同列名的数据框,可以使用以下代码:
```R
A <- data.frame(v=colnames(df), m=rep(0, ncol(df)))
for(i in colnames(df)){
missing <- sum(df[[i]]=="")
A[m == i, "m"] <- missing
}
```
这里使用rep()函数来创建与df相同列数的0向量,并在for循环中使用A[m == i, "m"] <- missing来将每个列的缺失值数量添加到A中。
y <- as.numeric(exprSet2[,"ENSG00000049541"]) colnames <- colnames(exprSet2) cor_data_df <- data.frame(colnames) for (i in 1:length(colnames)){ test <- cor.test(as.numeric(exprSet2[,i]),y,type="spearman") cor_data_df[i,2] <- test$estimate cor_data_df[i,3] <- test$p.value cor_data_df[i,4] <- gene } names(cor_data_df) <- c("symbol","correlation","pvalue")这段代码什么意思
这段代码的主要作用是计算一个基因(ENSG00000049541)与数据集中所有其他基因的相关性。具体来说,它会将数据集中的每个基因与目标基因进行Spearman相关性分析,并将结果存储在一个数据框中。其中,第一列是数据集中其他基因的符号,第二列是相关性系数,第三列是p值,第四列是目标基因的符号。这个过程会对数据集中的每个基因重复进行,最终生成一个包含所有相关性分析结果的数据框。
阅读全文