我的 sapply 函数的返回值,在一个输入项上,是一个列表而不是数据框。我不明白为什么。我知道 sapply 通常会生成所有返回值的列表;我很困惑为什么单个输入的返回值是一个列表。
这个例子有点傻,但它说明了问题。
> alphabet <- data.frame(letters = letters, numbers = 1:26)
> word <- c("w", "o", "r", "d")
> w <-sapply(word[1], function(x) {
n <- alphabet[alphabet$letters == x,"numbers"]
df <- data.frame(letter = x, number = n)
return(df)
}, USE.NAMES = F)
# [,1]
# letter "w"
# number 23
输出是一个长度为 2 的列表,即使
df
应该是一个数据框。
我希望输出与在匿名函数外部调用
data.frame()
相同:
> data.frame(letter = "w", number = 23)
# letter number
# 1 w 23
为什么我的 sapply 输出与我在
data.frame()
之外调用 sapply()
时的形式不同?
您可以使用
as.data.frame(t(w))
转换为 data.frame