R 使用Lappy通过自定义函数传递数据帧变量时出错

R 使用Lappy通过自定义函数传递数据帧变量时出错,r,function,lapply,R,Function,Lapply,我有一个用户建议的函数,作为对我前面问题的回答: word_string <- function(x) { inds <- seq_len(nchar(x)) start = inds[-length(inds)] stop = inds[-1] substring(x, start, stop) } 我现在希望能够将该函数应用于数据帧中指定列的所有行 以下数据框用于说明: word <- c("House", "Motorcar", "Boat", "Dog

我有一个用户建议的函数,作为对我前面问题的回答:

word_string <- function(x) {
  inds <- seq_len(nchar(x))
  start = inds[-length(inds)]
  stop = inds[-1]
  substring(x, start, stop)
}
我现在希望能够将该函数应用于数据帧中指定列的所有行

以下数据框用于说明:

word <- c("House", "Motorcar", "Boat", "Dog", "Tree", "Drink")
some_value <- c("2","100","16","999", "65","1000000")
my_df <- data.frame(word, some_value, stringsAsFactors = FALSE ) 
my_df
      word some_value
1    House          2
2 Motorcar        100
3     Boat         16
4      Dog        999
5     Tree         65
6    Drink    1000000
因此,您可以看到函数正在被应用,但它的应用使得它对每一行进行部分计算。 所需的输出类似于:

[1] "ho" "ou" "us" "se
[2] "mo" "ot" "to" "or" "rc" "ca" "ar"
[3] "bo" "oa" "at"
[4] "do" "og"
[5] "tr" "re" "ee" 
[6] "dr" "ri" "in" "nk"

非常感谢您的指导。

原因是
[
仍然是一个带有一列的data.frame(如果我们不使用
),因此这里的单位是一列

str(my_df['word'])
'data.frame':   6 obs. of  1 variable:
# $ word: chr  "House" "Motorcar" "Boat" "Dog" ...
lappy
在单个列上循环,而不是在该列中的每个元素上循环

我们需要
$
[[

lapply(my_df[['word']], word_string)
#[[1]]
#[1] "Ho" "ou" "us" "se"

#[[2]]
#[1] "Mo" "ot" "to" "or" "rc" "ca" "ar"

#[[3]]
#[1] "Bo" "oa" "at"

#[[4]]
#[1] "Do" "og"

#[[5]]
#[1] "Tr" "re" "ee"

#[[6]]
#[1] "Dr" "ri" "in" "nk"

啊,是的!这似乎是一个显而易见的原因。谢谢你,阿克伦。我会接受你的回答。
str(my_df['word'])
'data.frame':   6 obs. of  1 variable:
# $ word: chr  "House" "Motorcar" "Boat" "Dog" ...
lapply(my_df[['word']], word_string)
#[[1]]
#[1] "Ho" "ou" "us" "se"

#[[2]]
#[1] "Mo" "ot" "to" "or" "rc" "ca" "ar"

#[[3]]
#[1] "Bo" "oa" "at"

#[[4]]
#[1] "Do" "og"

#[[5]]
#[1] "Tr" "re" "ee"

#[[6]]
#[1] "Dr" "ri" "in" "nk"