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是个空的数据框
时间: 2024-02-17 19:01:16 浏览: 130
根据你提供的代码,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值,第四列是目标基因的符号。这个过程会对数据集中的每个基因重复进行,最终生成一个包含所有相关性分析结果的数据框。
shuju <- read.csv("D:/2021113133.csv", header = TRUE)data <- data.frame(matrix(NA, nrow = 835, ncol = 5))colnames(data) <- c("id", "wd", "jd", "bj", "zx")for (i in 1:835) { data[i, "id"] <- i}data[, "wd"] <- shuju$wddata[, "jd"] <- shuju$jddata[, "bj"] <- shuju$bjdata[, "zx"] <- shuju$zxshuju <- read.csv("D:/20211131331.csv", header = TRUE)data3 <- data.frame(matrix(NA, nrow = 1877, ncol = 6))colnames(data3) <- c("id", "wd", "jd", "xe", "sj", "xy")data3[, "wd"] <- shuju$wddata3[, "jd"] <- shuju$jddata3[, "xe"] <- shuju$xedata3[, "sj"] <- shuju$sjdata3[, "xy"] <- shuju$xyfor (i in 1:1877) { data3[i, "id"] <- i} d=matrix(NA,nrow=835,ncol=1877)r <- 0.05 for (m in 1:835) { for (n in 1:1877) { d[m,n]<- sqrt((data3[n, "jd"] - data[m, "jd"]) ^ 2 + (data3[n, "wd"] - data[m, "wd"]) ^ 2) }} xe=numeric(835)for(i in 1:835){c<-0for(j in 1:1877){if(d<=r)c<-c+data3[j,"xe"]xe[i]<-c}}cor(data[,"bj"],xe),代码有什么问题
代码存在以下问题:
1. 第一段代码中,读入的文件路径为 "D:/2021113133.csv",但是第二段代码中,读入的文件路径为 "D:/20211131331.csv",文件名不一致,需要保持一致。
2. 在第二段代码中,赋值语句中变量名 "shuju" 与文件名 "20211131331.csv" 不一致,需要将 "shuju" 改为文件读入后的数据框名称。
3. 在第三段代码中,计算距离矩阵时,计算距离的语句中,使用了变量 "d",但是在判断语句中使用了变量 "d" 的全部数据,需要将 "d" 改为 "d[m,n]"。
4. 在第三段代码中,计算 xe 时,判断语句中应该使用 "d[m,n]",而不是 "d"。
5. 在最后一行代码中,应该使用 "xe",而不是 "data3[j,"xe"]"。
修改后的代码如下:
```R
shuju <- read.csv("D:/2021113133.csv", header = TRUE)
data <- data.frame(matrix(NA, nrow = 835, ncol = 5))
colnames(data) <- c("id", "wd", "jd", "bj", "zx")
for (i in 1:835) {
data[i, "id"] <- i
}
data[, "wd"] <- shuju$wd
data[, "jd"] <- shuju$jd
data[, "bj"] <- shuju$bj
data[, "zx"] <- shuju$zx
shuju2 <- read.csv("D:/2021113133.csv", header = TRUE)
data3 <- data.frame(matrix(NA, nrow = 1877, ncol = 6))
colnames(data3) <- c("id", "wd", "jd", "xe", "sj", "xy")
data3[, "wd"] <- shuju2$wd
data3[, "jd"] <- shuju2$jd
data3[, "xe"] <- shuju2$xe
data3[, "sj"] <- shuju2$sj
data3[, "xy"] <- shuju2$xy
for (i in 1:1877) {
data3[i, "id"] <- i
}
d <- matrix(NA, nrow = 835, ncol = 1877)
r <- 0.05
for (m in 1:835) {
for (n in 1:1877) {
d[m,n] <- sqrt((data3[n, "jd"] - data[m, "jd"]) ^ 2 + (data3[n, "wd"] - data[m, "wd"]) ^ 2)
}
}
xe <- numeric(835)
for(i in 1:835){
c <- 0
for(j in 1:1877){
if(d[m,n] <= r) c <- c + data3[j, "xe"]
}
xe[i] <- c
}
cor(data[,"bj"], xe)
```
阅读全文