我有以下数据框:
col1 <- c("a", "b", "c")
col2 <- c("c", "a", "d")
col3 <- c("b", "c", "a")
df <- data.frame(col1,col2,col3)
我想在这个数据框中创建一个新列,对于每一行,列有列col1,col2,col3的有序列表。因此,对于第一行,它将是一个列表,如&#34; a&#34;,&#34; b&#34;,&#34; c&#34;。
我处理它的方法是创建一个循环,但由于我有50k行,因此效率很低,所以我正在寻找更好的解决方案。
rown <- nrow(df)
i = 0
while(i<rown){
i = i +1
col1 <- df$col1[i]
col2 <- df$col2[i]
col3 <- df$col3[i]
col1 <- as.character(col1)
col2 <- as.character(col2)
col3 <- as.character(col3)
list1 <- c(col1, col2, col3)
list1 <- list1[order(sapply(list1, '[[', 1))]
a <- list1[1]
b <- list1[2]
c <- list1[3]
df$col.list[i] <- paste(a, b, c, sep = " ")
}
有关如何提高此代码效率的任何想法?
编辑:另一个问题与我的情况无关,因为我需要在排序每一行后粘贴三列,因此它是动态的粘贴语句,我不是要尝试更改数据框排序。
预期产出:
col1 col2 col3 col.list
a c b a b c
b a c a b c
c d a a c d