R 通过行循环一个if语句

R 通过行循环一个if语句,r,R,我对R相当陌生,所以我要问一个基本的问题 我有两个数据帧 数据帧1包含匹配对: Factor1 Factor2 A D B E C F 数据框2包含不同样本中不同因素的水平: Sample1 Sample2 A 10 0 B 10 0 C 0 0 D 0 10 E 0 10 F 0 0 我正在尝试循环第一个数据帧。对于数据帧1中的每一行,如果样本1中

我对R相当陌生,所以我要问一个基本的问题

我有两个数据帧

数据帧1包含匹配对:

Factor1 Factor2
  A       D
  B       E
  C       F
数据框2包含不同样本中不同因素的水平:

  Sample1 Sample2
A   10      0
B   10      0
C   0       0
D   0       10
E   0       10
F   0       0
我正在尝试循环第一个数据帧。对于数据帧1中的每一行,如果样本1中的系数1的级别大于5,而样本2中的系数2的级别大于5,则在数据帧1的第三列中添加TRUE。否则添加FALSE。我希望我的问题足够清楚。谢谢

Factor1 Factor2 if_match
  A       D       TRUE
  B       E       TRUE
  C       F       FALSE

假设两个数据集中的列数相同,使用
match
将“df2”的行名与“df1”的每一列的行名进行比较,得到行的索引,然后得到第二个数据集对应的列值,检查它是否大于或等于5,并
将其减少为单个逻辑
向量

df2$if_match <- Reduce(`|`, Map(function(x, y) y[match(row.names(df2), 
                    x, nomatch = 0)] >=5 , df1, df2))
df2$if_match
#[1]  TRUE  TRUE FALSE
df2$if_match=5,df1,df2))
df2$if_匹配
#[1] 真假

假设两个数据集中的列数相同,使用
match
将“df2”的行名与“df1”的每列行名进行比较,得到行的索引,然后得到第二个数据集对应的列值,检查它是否大于或等于5,并
将其减少为单个逻辑
向量

df2$if_match <- Reduce(`|`, Map(function(x, y) y[match(row.names(df2), 
                    x, nomatch = 0)] >=5 , df1, df2))
df2$if_match
#[1]  TRUE  TRUE FALSE
df2$if_match=5,df1,df2))
df2$if_匹配
#[1] 真假

假设data.frame 2的row.names与data.frame 1中的因子相等,则可以使用row.names子集:

DF1$if_match <- DF2[as.character(DF1$Factor1),'Sample1'] > 5 &
                DF2[as.character(DF1$Factor2),'Sample2'] > 5

> DF1
  Factor1 Factor2 if_match
1       A       D     TRUE
2       B       E     TRUE
3       C       F    FALSE

复制示例数据的代码:

DF1 <- read.csv(text=
'Factor1,Factor2
A,D
B,E
C,F')

DF2 <- read.csv(text=
'Sample1,Sample2
A,10,0
B,10,0
C,0,0
D,0,10
E,0,10
F,0,0')

DF1假设data.frame 2的row.names与data.frame 1中的因子相等,则可以使用row.names子集:

DF1$if_match <- DF2[as.character(DF1$Factor1),'Sample1'] > 5 &
                DF2[as.character(DF1$Factor2),'Sample2'] > 5

> DF1
  Factor1 Factor2 if_match
1       A       D     TRUE
2       B       E     TRUE
3       C       F    FALSE

复制示例数据的代码:

DF1 <- read.csv(text=
'Factor1,Factor2
A,D
B,E
C,F')

DF2 <- read.csv(text=
'Sample1,Sample2
A,10,0
B,10,0
C,0,0
D,0,10
E,0,10
F,0,0')

到目前为止你试过什么了吗?A,B,C。。。在data.frame 2中,列或行的名称?到目前为止您尝试过什么吗?是a、B、C。。。在data.frame 2中,是列还是行.name?