r - 应用数据框列分配

标签 r dataframe apply assign sapply

我想重写 this question 的前几行,而且我不明白为什么我的 sapply 行不起作用。

我想转动这些线:

cols <- sample(c(1:5), 1)
label <- rep(paste0("label ", seq(from=1, to=10)))
mydata <- data.frame(label)
for (i in 1:cols) {mydata[,i+1] <- sample(c(1:10), 10)}

进入:

cols <- sample(c(1:5), 1) 
mydata <- data.frame(rep(paste0("label ", seq(1,10))))
sapply(1:cols, function(x) { mydata[,(x+1)] <- sample(c(1:10), 10) } )

但由于某种原因,sapply 行给了我一个新列将在现有列后留下孔 错误,我不知道为什么。

我也尝试过

sapply(1:cols, function(x) { mydata[,(x+1)] <- sample(c(1:10), 10); mydata } )
Map(function(x, mydata1) {mydata1[,(x+1)] <- sample(c(1:10), 10)}, x = 1:cols, mydata1 = mydata)

最佳答案

我无法确定您的代码不起作用的原因,但这与运行 sapply 之前未定义列有关。因此,如果您事先定义 data.frame,它就可以工作

cols <- sample(c(1:5), 1) 
mydata <- data.frame(matrix(rep(0, 10*(cols+1)), ncol = cols+1))
mydata[, 1] <- rep(paste0("label ", seq(1,10)))
sapply(1:cols, function(x) {
  mydata[, x+1] <- sample(c(1:10), 10) } )

编辑:

您可以使用以下代码代替

cols <- sample(c(1:5), 1) 
mydata <- data.frame(rep(paste0("label ", seq(1,10))),
                     sapply(1:cols, function(x) {sample(c(1:10), 10) } ))

关于r - 应用数据框列分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49457747/

相关文章:

python - 如何在没有多个循环的情况下将多个函数应用于 pandas 数据框?

r - 使用 R 中的 apply() 函数查找 2 个矩阵的每一行的加权特征

r - 函数对给定字符串长度的可变数量的子字符串进行采样

r - R中的第四角算法

python - 查找两个不同数据框列之间的部分匹配,并在找到匹配时分配值

python - 从pandas数据框中同时获取最大值和具有最大值的索引

list - data.frame 行到列表

在后台并行 session 中运行 R 脚本

java - 将 R 连接到远程服务器上的 Hive

r - 如何对 qwrap2 Summary_table 的输出列进行排序