首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中,如果元素与另一列的元素占据同一行,则从列中选择元素

在R中,如果元素与另一列的元素占据同一行,则从列中选择元素
EN

Stack Overflow用户
提问于 2019-02-26 12:32:08
回答 1查看 45关注 0票数 0

这个问题可能是在其他地方提出的,但由于我对R是新手,而且我的词汇量有限,我似乎找不到它。

如果我有一个字符填充的数据框架,请说:

代码语言:javascript
复制
c1 <- c("aa", "bb", "cc", "dd", "ee")
c2 <- c("ff", "gg", "hh", "ii", "jj")
c3 <- c("kk", "ll", "mm", "nn", "oo")
c4 <- c("pp", "qq", "rr", "ss", "tt")
c5 <- c("uu", "vv", "ww", "xx", "yy")
df <- cbind.data.frame(c1, c2, c3, c4, c5)

结果是

代码语言:javascript
复制
  c1 c2 c3 c4 c5
1 aa ff kk pp uu
2 bb gg ll qq vv
3 cc hh mm rr ww
4 dd ii nn ss xx
5 ee jj oo tt yy

我想从第4列中选择与第2列中的多个元素占据同一行的元素(例如,"gg“、"ii”和"jj"),有没有办法不对每个元素使用不同的命令来做到这一点?

例如,

代码语言:javascript
复制
df$c4[i = c(2,4,5)]

会回来

代码语言:javascript
复制
[1] qq ss tt
Levels: pp qq rr ss tt

代码语言:javascript
复制
df$c4[df$c2 == "gg"]

会回来

代码语言:javascript
复制
[1] qq
Levels: pp qq rr ss tt

但当我试图把这两者结合起来

代码语言:javascript
复制
df$c4[i = c(df$c2=="gg", df$c2=="ii", df$c2=="jj")]

R似乎只有部分知道该做什么,返回

代码语言:javascript
复制
[1] qq   <NA> <NA>
Levels: pp qq rr ss tt
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-26 12:40:20

不确定你真正想要完成什么,但在最后一行中,这就是你实际上正在做的事情:

代码语言:javascript
复制
> df$c4[i = c(df$c2=="gg", df$c2=="ii", df$c2=="jj")]
[1] "qq" NA   NA  
> i = c(df$c2=="gg", df$c2=="ii", df$c2=="jj")
> i
 [1] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
[10] FALSE FALSE FALSE FALSE FALSE  TRUE
> df$c2
[1] "ff" "gg" "hh" "ii" "jj"

您正在将长度15逻辑向量传递给5长度字符向量,这没有多大意义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54885667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档