As.vector не преобразует подмножество data.frame в вектор
Ниже я предоставил фрагмент кода, над которым я работал. Я успешно читал в строке как таблицы. Существует некоторое подмножество моих таблиц, для которых я хочу использовать функцию median (). Из того, что я сделал, и из моего собственного опыта, median () не определил поведение ни для data.frame, ни для подмножества data.frame. Поэтому, желая приспособить мою проблему к определенному поведению, я попытался преобразовать желаемое подмножество в вектор. Однако даже после использования as.vector для приведения желаемого подмножества у меня все еще есть data.frame. Когда я пытаюсь вызвать медиану, я получаю «аргумент не является числовым или логическим: возвращаем NA».
Я сам немного поиграл в это и попытался найти информацию здесь и в других местах. Как примечание я попробовал методы, перечисленные в принятом решении в этой темеR-дружественный способ преобразовать столбец R data.frame в вектор? и добился тех же результатов, что и сейчас. Меня не слишком волнует, как я это делаю; не стесняйтесь предлагать другие методы.
Спасибо за уделенное время.
for(i in 1:length(text_array)){
temp= read.table(textConnection(text_array[i]), sep="\t",row.names=NULL, header= FALSE, fill=TRUE)
value=""
#we are now going to process temp and add it
cur_DS=coll_data_sets[i]
#median is the value that we are going to insert into the result array.
#currently the logic behind it is not implemented.
#the value will be the median of state1 divided by the median of state2.
t_states=vector(length=ncol(temp))
for(j in 1:ncol(temp)){
t_states[j]=toString(temp[2,j])
}
t_states=(unique(t_states))
#this logic is current is set to reject data from more than one state.
# It will also reject anything that appears to lack state data.
if(length(t_states) != 2){
value=NA
}else{
s1_expr=as.vector(x=(temp[3, temp[2,]==t_states[1]]))
s2_expr=as.vector(x=temp[3, temp[2,]==t_states[2]])
print(class(s1_expr))
# med1= (median(s1_expr))
# med2= (median(s2_expr))
# if(is.na(med1[1]) || is.na(med2[1])){
# value=-1
}#else{
# value=med1[1]/med2[1]
# print(value)
# }
}
[1] "data.frame"
[1] "data.frame"
[1] "data.frame"
Вот пример значения для «temp»:
V1 V2 V3 V4
1 GSM506899 GSM506900 GSM506901 GSM506902
2 wild type wild type Zbtb20 null Zbtb20 null
3 99.3 98.24 66.2 102.42
4 55.8 20.11 22.9 16.98
5 159.6 63.46 102.5 67.17
6 166 54.73 215 49.46