r - 数据帧内的数据帧?

标签 r dataframe

考虑这个例子:

df <- data.frame(id=1:10,var1=LETTERS[1:10],var2=LETTERS[6:15])

fun.split <- function(x) tolower(as.character(x))
df$new.letters <- apply(df[ ,2:3],2,fun.split)

df$new.letters.var1
#NULL

colnames(df)
# [1] "id"          "var1"        "var2"        "new.letters"

df$new.letters
#       var1 var2
# [1,]  "a"  "f" 
# [2,]  "b"  "g" 
# [3,]  "c"  "h" 
# [4,]  "d"  "i" 
# [5,]  "e"  "j" 
# [6,]  "f"  "k" 
# [7,]  "g"  "l" 
# [8,]  "h"  "m" 
# [9,]  "i"  "n" 
# [10,] "j"  "o" 

会有这么好心的人解释一下这里发生了什么吗?数据框中的新数据框?

我期待这个:
colnames(df)
# id var1 var2 new.letters.var1 new.letters.var2

最佳答案

原因是因为您将一个新列分配给了 2 列 matrix输出 apply .所以,结果将是 matrix在单个列中。您可以将其转换回正常的 data.frame

 do.call(data.frame, df)

更直接的方法是分配 2 列,我使用 lapply而不是 apply因为可能存在列属于不同类别的情况。 apply返回 matrix对于混合类,列将是“字符”类。但是,lapplylist 中获取输出并保留 class
df[paste0('new.letters', names(df)[2:3])] <- lapply(df[2:3], fun.split)

关于r - 数据帧内的数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30896605/

相关文章:

r - 使用 IFELSE 从多个概率生成数据

r - MXNET 可以拟合 R 中的回归 LSTM 模型吗?

python - 双索引 python pandas

r - linux系统安装R-3.3.1时出现 "C compiler cannot create executables"错误

r - 在 r 中的数据框中搜索字符串的快速方法

r - 使用 selectizeGroup 的 Reactive Module 没有输出

在 Julia 中使用变量索引 Dataframe

python - 在 Pandas 数据框中使用 NaN 条目折叠行

r - 如何定义2列指标

dataframe - 使用列选择器 (Cols) 转换数据框列失败