如何根据R中的列类型选择列?

如何根据R中的列类型选择列?,r,dataframe,R,Dataframe,我在R中有一个data.frame,有许多列(超过50+)。列类型为整数、因子和字符。有没有一种快速的方法只选择我的数据帧的所有字符列 我试过下面这样的方法,但没用/ 示例:新建_数据集dplyr::如果可以帮助您,请选择_ 例如,这将获取表t中类型为character的所有列: > t %>% select_if(is.character) %>% glimpse() Rows: 199,303 Columns: 6 $ user_type &l

我在R中有一个data.frame,有许多列(超过50+)。列类型为整数、因子和字符。有没有一种快速的方法只选择我的数据帧的所有字符列

我试过下面这样的方法,但没用/


示例:新建_数据集
dplyr::如果
可以帮助您,请选择_

例如,这将获取表
t
中类型为
character
的所有列:

> t %>% 
    select_if(is.character) %>% 
    glimpse()

Rows: 199,303
Columns: 6
$ user_type     <chr> "registered", "registered", "registered", "registered",…
$ location      <chr> "Massachusetts", "United States", "South Africa", "Loui…
$ website_url   <chr> "http://caerwyn.com", "http://www.berbs.us", "http://tu…
$ link          <chr> "https://stackoverflow.com/users/2406/caerwyn", "https:…
$ profile_image <chr> "https://www.gravatar.com/avatar/0983795ba79aaa48a86752…
$ display_name  <chr> "caerwyn", "berberich", "tumbleweed", "Nate", "Ryan", "…
>t%>%
如果(是.字符)%>%,请选择_%
一瞥
行数:199303
栏目:6
$user_类型“已注册”、“已注册”、“已注册”、“已注册”、,…
$location“马萨诸塞州”、“美国”、“南非”、“路易…
$website\u url“http://caerwyn.com", "http://www.berbs.us", "http://tu…
$link“https://stackoverflow.com/users/2406/caerwyn“,”https:…
$profile_图像”https://www.gravatar.com/avatar/0983795ba79aaa48a86752…
$display_name“caerwyn”、“berberich”、“风滚草”、“Nate”、“Ryan”和“…
is.numeric
is.logical
等替换
is.character
,可以得到您所需要的。

dplyr::select_如果()
dplyr::select(其中(…)
替换为
dplyr
1.0.0中的

要选择类型为字符的列,请使用:

库(dplyr)
风暴%>%选择(其中(是.字符))%>%
一瞥
行:10010
栏目:2
$name“艾米”、“艾米”、“艾米”、“艾米”。。。
$status“热带低气压”、“热带低气压”。。。
数据:

df <- data.frame(
  char = c("hi there", "how're you", "what's up"),
  int = 1:3,
  fac = c("A", "B", "C"),
  stringsAsFactors = F
)
str(df)
'data.frame':   3 obs. of  3 variables:
 $ char: chr  "hi there" "how're you" "what's up"
 $ int : int  1 2 3
 $ fac : chr  "A" "B" "C"

这里,
sapply
将函数
is.character
应用于
df
中的每一列。函数本身运行一个测试-是'character'类型的列-并相应地返回TRUE或FALSE。

old_数据集[sapply(old_数据集,is.character)]如果有帮助的话,就如你所说的,考虑接受和/或投票。嘿,克里斯,我给了这个机会,但是我的名声还不到15。所以它记录下来了,但还没有公开展示。@查德朗伍德。
df <- data.frame(
  char = c("hi there", "how're you", "what's up"),
  int = 1:3,
  fac = c("A", "B", "C"),
  stringsAsFactors = F
)
str(df)
'data.frame':   3 obs. of  3 variables:
 $ char: chr  "hi there" "how're you" "what's up"
 $ int : int  1 2 3
 $ fac : chr  "A" "B" "C"
df[sapply(df, is.character)]
        char fac
1   hi there   A
2 how're you   B
3  what's up   C