strsplit一个融化的数据集

strsplit一个融化的数据集,r,dataframe,reshape,R,Dataframe,Reshape,我正试图用一个大的CSV文件的格式来绘制基因测试的结果。CSV中的每个x,y位置都是一个数字分数,大多数分数为零。我只对非零数据感兴趣。此外,每个X和Y标题的名称都有额外的信息,我想使用这些信息进一步细分数据。我想做的是融化数据,用零值剥离所有行,并对融化的数据进行字符串分割,以提供我可以用于转换的额外列。然而,当我尝试对融化的数据进行字符串分割时,我遇到了一个问题。以下是命令和一些示例数据: test <- read.csv("~/Documents/Bioinformatics/Pyt

我正试图用一个大的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)
头部(小,熔化)

但是,当我尝试在$variable列上拆分字符串时,会得到以下结果:

small.melt$name <- sapply(strsplit(small.melt$variable, "_") , "[", 1)
Error in strsplit(small.melt$variable, "_") : non-character argument

small.melt$name问题在于
small.melt$variable
属于类factor,而
strsplit()
需要一个字符作为第一个参数。(在上面和下面的简化示例中,它返回的错误消息告诉您这一点):


谢谢你,乔希。我的脚本顶部有一个选项(stringsAsFactors=FALSE),并且还使用as.is=True导入了csv,但因子还是滑了进来。我很确定当您从smalltest转换为small时,
melt()
会将列名转换为因子。melt.melt这样做是为了保留列的顺序,以防它们很重要。另请参见自动将因子强制为字符的stringr包。还有colsplit函数。。。
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
small.melt$name <- sapply(strsplit(small.melt$variable, "_") , "[", 1)
Error in strsplit(small.melt$variable, "_") : non-character argument
f <- as.factor(c("a_b", "a_c"))
strsplit(f, "_")
Error in strsplit(f, "_") : non-character argument
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"