我正在寻找一种方法来处理R中的字符串/字符格式文本而不是数字的累积和。应该连接不同的文本字段。
E.g。在数据框中" df":
A列包含输入,B列包含所需结果。
Intent intent = new Intent(MainActivity.this, LayoutService.class);
intent.putExtra(LayoutService.ORIENTATION,
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
startService(intent);
目前我正在通过以下循环解决此问题
A B
1 banana banana
2 boats banana boats
3 are banana boats are
4 awesome banana boats are awesome
我想知道是否存在更优雅/更快的解决方案。
答案 0 :(得分:10)
android:ems="(size)"
答案 1 :(得分:4)
我不知道它是否更快,但至少代码更短:
sapply(seq_along(df$A),function(x){paste(A[1:x], collapse=" ")})
感谢Rolands的评论,我意识到这是for循环可能有用的罕见事件之一,因为它为我们节省了重复的索引。它与OP不同,因为它从2开始,省去了forloop中if语句的需要。
res <- c(NA, length(df1$A))
res[1] <- as.character(df1$A[1])
for(i in 2:length(df1$A)){
res[i] <- paste(res[i-1],df1$A[i])
}
res
答案 2 :(得分:4)
我们可以尝试
i1 <- sequence(seq_len(nrow(df1)))
tapply(df1$A[i1], cumsum(c(TRUE,diff(i1) <=0)),
FUN= paste, collapse=' ')
或者
i1 <- rep(seq(nrow(df1)), seq(nrow(df1)))
tapply(i1, i1, FUN= function(x)
paste(df1$A[seq_along(x)], collapse=' ') )