我试图绘制以大型CSV文件格式出现的基因测试结果。 CSV中的每个x,y位置都是一个数字分数,其中大部分为零。我只对非零数据感兴趣。此外,每个X和Y标题的名称还有其他信息,我希望用它们进一步对数据进行子集化。我想要做的是融化数据,使用零值去除所有行,并对熔化的数据进行字符串拆分,以提供可用于投射的额外列。但是,当我尝试对熔化的数据进行字符串拆分时遇到问题。以下是命令和一些示例数据:
test <- read.csv("~/Documents/Bioinformatics/Python_Scripts/test.csv", as.is=TRUE)
smalltest <- test[1:10, 1:4]
small.melt <- melt(smalltest)
head(smalltest)
head(small.melt)
这导致以下数据:
head(small.test)
BlastCompare Triostin_A_2 Triostin_A_1 Myxochelin_2 Myxochelin_1
HA9WEQA05FUABT_497_TxR_K2 0 0 105 120
G9VUOJT08JA64I_426_TxC_N3 0 0 0 0
HA9WEQA06G2SFP_457_TxC_J4 0 0 0 0
HA9WEQA05GCP8Q_506_TxR_J7 150 150 0 0
HA9WEQA07HU6MW_421_TxR_P7 0 0 0 0
G9VUOJT05FST3W_399_TxR_J4 0 0 255 240
头(small.melt)
BlastCompare variable value
HA9WEQA05FUABT_497_TxR_K2Triostin_A_2 0
G9VUOJT08JA64I_426_TxC_N3 Triostin_A_2 0
HA9WEQA06G2SFP_457_TxC_J4 Triostin_A_2 0
HA9WEQA05GCP8Q_506_TxR_J7 Triostin_A_2 150
HA9WEQA07HU6MW_421_TxR_P7 Triostin_A_2 0
G9VUOJT05FST3W_399_TxR_J4 Triostin_A_2 0
但是,当我尝试在$ variable列上进行字符串拆分时,会得到以下结果:
small.melt$name <- sapply(strsplit(small.melt$variable, "_") , "[", 1)
Error in strsplit(small.melt$variable, "_") : non-character argument
对于为什么有任何想法?或者如何解决这个问题?
感谢 zach cp
答案 0 :(得分:4)
问题是small.melt$variable
属于因子,而strsplit()
期望字符向量作为第一个参数。 (它几乎告诉你它上面返回的错误信息以及下面的剥离示例):
f <- as.factor(c("a_b", "a_c"))
strsplit(f, "_")
Error in strsplit(f, "_") : non-character argument
要让strsplit()
满意,只需使用as.character()
将因子转换为字符向量:
sapply(strsplit(as.character(small.melt$variable), "_") , "[", 1)
# [1] "Triostin" "Triostin" "Triostin" "Triostin" "Triostin"
# [6] "Triostin" "Triostin" "Triostin" "Triostin" "Triostin"
# [11] "Triostin" "Triostin" "Myxochelin" "Myxochelin" "Myxochelin"
# [16] "Myxochelin" "Myxochelin" "Myxochelin" "Myxochelin" "Myxochelin"
# [21] "Myxochelin" "Myxochelin" "Myxochelin" "Myxochelin"