如何构建函数来命名长度为x in R的列?

如何构建函数来命名长度为x in R的列?,r,dataframe,R,Dataframe,我想建立一个函数,可以搜索文本向量中的单词。但有时向量将包含10个以上的元素(ps:向量的长度可以变化)。所以我想根据函数“x”的长度来命名这些列。名称应该是“str1”、“str2”、“str3”……等等。我怎么做?谢谢你的帮助:) 像这样: require(stringr) myfun <- function(u) { n <- seq_along(u) word5 <- c("my", "god", 6, 5, 3, 4, 3) qq <- funct

我想建立一个函数,可以搜索文本向量中的单词。但有时向量将包含10个以上的元素(ps:向量的长度可以变化)。所以我想根据函数“x”的长度来命名这些列。名称应该是“str1”、“str2”、“str3”……等等。我怎么做?谢谢你的帮助:)

像这样:

require(stringr)

myfun <- function(u) {
  n <- seq_along(u)
  word5 <- c("my", "god", 6, 5, 3, 4, 3)
  qq <- function(x) {
    str_count(x, pattern = word5)
  }
  Freq <- sapply(u, FUN = qq)
  output1 <- data.frame(word5, Freq)
  colnames(output1)[-1] <- paste0("str", n)
  output1
}

u <- c("my god","my love my", "my my my")


myfun(u)
#   word5 str1 str2 str3
# 1    my    1    2    3
# 2   god    1    0    0
# 3     6    0    0    0
# 4     5    0    0    0
# 5     3    0    0    0
# 6     4    0    0    0
# 7     3    0    0    0
require(stringr)
myfun这有用吗

library(tidyverse)

word_searcher <- function(vec_to_search, pattern) {
  word_count <- stringr::str_count(vec_to_search, pattern)

  setNames(word_count, paste0("str_", seq_along(word_count))) %>%
    enframe() %>%
    spread(name, value) %>%
    mutate(word5 = pattern) %>%
    select(word5, everything())

}

u <- c("my god","my love my", "my my my", "my", "pop", "pip my")
word_searcher(u, "my")


# # A tibble: 1 x 7
#   word5 str_1 str_2 str_3 str_4 str_5 str_6
#   <chr> <int> <int> <int> <int> <int> <int>
# 1    my     1     2     3     1     0     1
库(tidyverse)
单词搜索者%
排列(名称、值)%>%
变异(word5=模式)%>%
选择(word5,everything())
}
你的数据是什么

非常感谢你!你完美地解决了我的问题。我还有一个问题。如果要删除包含数字0的行。“我该怎么做?”幽舟,谢谢你。祝你今天愉快:)
require(stringr)

myfun <- function(u) {
  n <- seq_along(u)
  word5 <- c("my", "god", 6, 5, 3, 4, 3)
  qq <- function(x) {
    str_count(x, pattern = word5)
  }
  Freq <- sapply(u, FUN = qq)
  output1 <- data.frame(word5, Freq)
  colnames(output1)[-1] <- paste0("str", n)
  output1
}

u <- c("my god","my love my", "my my my")


myfun(u)
#   word5 str1 str2 str3
# 1    my    1    2    3
# 2   god    1    0    0
# 3     6    0    0    0
# 4     5    0    0    0
# 5     3    0    0    0
# 6     4    0    0    0
# 7     3    0    0    0
library(tidyverse)

word_searcher <- function(vec_to_search, pattern) {
  word_count <- stringr::str_count(vec_to_search, pattern)

  setNames(word_count, paste0("str_", seq_along(word_count))) %>%
    enframe() %>%
    spread(name, value) %>%
    mutate(word5 = pattern) %>%
    select(word5, everything())

}

u <- c("my god","my love my", "my my my", "my", "pop", "pip my")
word_searcher(u, "my")


# # A tibble: 1 x 7
#   word5 str_1 str_2 str_3 str_4 str_5 str_6
#   <chr> <int> <int> <int> <int> <int> <int>
# 1    my     1     2     3     1     0     1
u <- c("my god","my love my", "my my my")
word5<- c("my","god",6,5,3,4)
library(stringr)
ans <- rbind.data.frame(t(sapply(word5, function(x) str_count(u, x))))
    V1 V2 V3
my   1  2  3
god  1  0  0
6    0  0  0
5    0  0  0
3    0  0  0
4    0  0  0