小编Joh*_*egg的帖子

是否可以根据 r 中的行范围和逻辑条件对 data.frame 进行子集化?

在基 r 中,我可以根据行范围对 data.frame 进行子集化:

mtcars[1:5,]

或者我可以根据逻辑条件进行子集:

mtcars[mtcars$cyl==6,]

但我似乎无法同时做到:

mtcars[1:5 & mtcars$cyl==6,]

警告信息:在 1:5 & mtcars$cyl == 6 中:较长的对象长度不是较短对象长度的倍数

有没有另一种方法可以做到这一点?

用例是使用 LaF 包加载一个巨大的 .csv 文件,它允许使用类似于 base r 的命令进行过滤,但是使用行范围比使用条件加载内容要快得多,并且添加多个条件意味着我有时会等待一天的数据加载。

r

2
推荐指数
1
解决办法
60
查看次数

如何从字符串中提取状态名称

这似乎很明显,但我无法弄清楚。我有一个包含州名和其他随机单词的字符向量,并想提取州名。

df <- data.frame(string = c("The quick brown Arizona","jumps over the Alabama","dog Arkansas"))
Run Code Online (Sandbox Code Playgroud)

我可以单独创建提取状态名称:

df$state[grepl("Alabama",df$string)] <- "Alabama"
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何在不复制和粘贴 42 次的情况下为所有状态复制它。我得到的最接近的是:

find.state <- function(x){
   df$state[grepl(x,df$string)] <- x
}
lapply(state.name, find.state)
Run Code Online (Sandbox Code Playgroud)

但这只是打印所有州名。

r

0
推荐指数
1
解决办法
711
查看次数

标签 统计

r ×2