這是我的資料集的表示
mydata<-data.frame(ID=1:3, str=c("ANN_ABL_ABL","ABL", "SLE_ANN"))
我想計算每個觀察字串中的元素數,以便獲得如下所示的資料集。
ID str number_of_elements
1 1 ANN_ABL_ABL 3
2 2 ABL 1
3 3 SLE_ANN 2
uj5u.com熱心網友回復:
基本 R 選項
transform(
mydata,
number_of_elements = nchar(gsub("[^_]","",str)) 1
)
給
ID str number_of_elements
1 1 ANN_ABL_ABL 3
2 2 ABL 1
3 3 SLE_ANN 2
uj5u.com熱心網友回復:
一個可能的解決方案,使用stringr::str_count:
library(tidyverse)
mydata<-data.frame(ID=1:3, str=c("ANN_ABL_ABL","ABL", "SLE_ANN"))
mydata %>%
mutate(n = str_count(str, "_") 1)
#> ID str n
#> 1 1 ANN_ABL_ABL 3
#> 2 2 ABL 1
#> 3 3 SLE_ANN 2
uj5u.com熱心網友回復:
該scan功能設定為拉開文本行。它的默認第一個引數是檔案名,但text幾年前添加了一個引數。您可以撰寫一個相同的函式,其第一個引數是text,我還選擇將預期輸入型別的默認設定為“字符”。
scant <- function(txt, ...){scan(text=txt, what="", quiet=TRUE, ...) }
我經歷了這些體操,以允許該scan*功能在lapply通話中作業:
lengths( lapply(mydata$str, scant, sep="_") )
我本可以使用一個匿名的一次性函式在一行中執行此操作,但我決定將這個輔助函式放在我的 .Rprofile 設定中。多年來,我有一個有點相似的read.txt函式,它使用 atextConnection向函式提供字符資料read.table。將 text 引數添加到scan.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/407635.html
標籤:
