R如何通过名称ro和列名

时间:2018-02-01 17:24:43

标签: r dataframe row

希望有一个快速的答案,我现在已经困惑了一段时间。

bp="300"
cur_sample="10_n1"

# PRINTS WHAT AT THIS POSITION BY ROW NAME AND COL NAME
FGA_matrix[cur_sample,bp]
[1] NA

# RETURNS AN ERROR
FGA_matrix[cur_sample,bp]=1
Error in Summary.factor(1L, na.rm = FALSE) : 
‘max’ not meaningful for factors
In addition: Warning message:
In Ops.factor(i, 0L) : ‘>=’ not meaningful for factors

#HOWEVER
FGA_matrix[,as.character(bp)]=1
FGA_matrix[,as.character(bp)]
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

# SO WE CAN ASSIGN VALUES BASED ON COL NAME

# BUT IT DOESN'T WORK FOR ROW NAMES
> FGA_matrix[cur_sample,]=1
Error in Summary.factor(1L, na.rm = FALSE) : 
‘max’ not meaningful for factors
In addition: Warning message:
In Ops.factor(i, 0L) : ‘>=’ not meaningful for factors

有没有人知道如何根据行名称为df赋值?我确定有一个快速的答案,但我的谷歌搜索有点空缺。

非常感谢提前

EDIT;以下是所请求的数据框的顶部:

> FGA_matrix[1:10,1:10]
          300 301 302 303 304 305 306 307 308 309
10_n1     NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
10_n2     NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
10_n3     NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
11_n1     NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
11_n2     NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
11_n3     NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
12_18_n1  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
12_18_n2  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
12_18_n3  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
12_4_n1   NA  NA  NA  NA  NA  NA  NA  NA  NA  NA

1 个答案:

答案 0 :(得分:0)

感谢您的帮助。根据Onyambu的回答:

> FGA_matrix[rownames(FGA_matrix)==cur_sample,as.character(bp)]=5
> FGA_matrix[1:10,1:10]
         300 301 302 303 304 305 306 307 308 309
10_n1      5  NA  NA  NA  NA  NA  NA  NA  NA  NA
10_n2     NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
10_n3     NA  NA  NA  NA  NA  NA  NA  NA  NA  N

A