簡體   English   中英

從R中的列表中寫表

[英]writing table from a list in R

我有一個SNP文件,我想計算每列中的數量。 從列表中寫表時,它顯示錯誤為“參數意味着不同的行數”。 我想要一個解決方案,以便我可以將列表寫入表格。 請幫我。 輸入文件: 添加圖像文件輸入文件包含830行和210列#1 R代碼

require(gdata)
library(plyr)
df = read.xls ("jTest_file.xlsx", sheet = 1, header = TRUE)
combine = c()
for(i in 1:v){
    vec = count(df[,i])
    colnames(vec) <- c (colnames(df[i]),"freq")
    combine = c(combine,vec)
}
write.table(combine,file="test_output.xls",sep="\t",quote=FALSE,row.names =FALSE)

但是輸入中有一些空白值,所以我用XX替換了空白,這樣行號就可以維持,但是不起作用。 #2 R代碼

require(gdata)
library(plyr)
df = read.xls ("jTest_file.xlsx", sheet = 1, header = TRUE)
combine = c()
for(i in 1:v){
    data=sub("^$", "XX", df[,i])
    vec = count(data)
    colnames(vec) <- c (colnames(df[i]),"freq")
    combine = c(combine,vec)
}
write.table(combine,file="test_output.xls",sep="\t",quote=FALSE,row.names =FALSE) 

使用dplyrtidyr軟件包可以更清晰地完成這些計數。

由於您沒有提供樣本數據,我將先做一些:

#Make sample data
li = lapply(1:10, function(X) {
    sample(x = c("A", "C", "G", "T"), size = 10, 
           replace = TRUE)
    })
df = data.frame(li, stringsAsFactors = FALSE)
names(df) = paste("X", 1:10, sep = "")

head(df, 3)    
#   X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
# 1  T  G  C  T  C  A  T  T  C   T
# 2  A  A  A  G  G  G  T  G  C   A
# 3  C  C  A  T  A  A  C  A  T   G

現在真正的答案 - 做計數:

library(tidyr)
library(dplyr)
df_long = gather(df, var, value)
df_groups = group_by(df_long, var, value)
df_counts = summarise(df_groups, count = n())
df_wide = spread(df_counts, value, count, fill = 0)

df_wide    
# Source: local data frame [10 x 5]
# Groups: var [10]
# 
#      var     A     C     G     T
# *  <chr> <dbl> <dbl> <dbl> <dbl>
# 1     X1     3     4     0     3
# 2    X10     5     0     2     3
# 3     X2     3     2     2     3
# 4     X3     4     3     1     2
# 5     X4     2     1     4     3
# 6     X5     2     3     3     2
# 7     X6     4     2     1     3
# 8     X7     2     4     2     2
# 9     X8     2     3     2     3
# 10    X9     2     2     2     4

我鼓勵您探索各個步驟( df_longdf_groupsdf_countsdf_wide )。 這將讓您了解數據的運行情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM