使用R重复替换单词

时间:2015-06-04 21:29:18

标签: r loops replace

我有一句话,我用两行打印出来:

cat("Today is Monday and it is sunny.\nMonday is a sunny day\n")

我有两个清单:

day<-c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
weather<-c("sunny", "cloudy", "rainy", "stormy","sunny", "cloudy", "rainy")

我正在尝试生成一个文本文件,其中包含上面的字符串变量,但列表中包含每天和天气变量。

所以我会:

Today is Monday and it is sunny.
Monday is a sunny day
Today is Tuesday and it is cloudy.
Tuesday is a cloudy day
Today is Wednesday and it is rainy.
Wednesdady is a rainy day   

....等等。

我想知道这是否可能在R中。我是R的一个相对较新的初学者所以任何解释都会非常感激!!

2 个答案:

答案 0 :(得分:2)

day<-c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
weather<-c("sunny", "cloudy", "rainy", "stormy","sunny", "cloudy", "rainy")

sprintf可用于将字符串插入其他字符串:

txt1 <- sprintf("Today is %s and it is %s.",day,weather)
txt2 <- sprintf("%s is a %s day",day,weather)

现在将结果交错(将它们粘在一起作为矩阵的行,然后按列提取元素 - 还有其他方法可以做到这一点,但这是一种有用的快速和脏的方式):

c(rbind(txt1,txt2))

您可以将cat()sep="\n"paste()collapse="\n"一起使用,将结果向量放入单个换行符分隔的结果中......或者只使用{{1将结果向量发送到文本文件。

答案 1 :(得分:2)

您可以构建一个简单的循环并使用cat进行打印。

for (i in 1:length(day)) {
    cat("Today is", day[i], "and it is a", weather[i], "day.\n")
    cat(day[i], "is a", weather[i], "day\n")
}

# Today is Monday and it is a sunny day.
# Monday is a sunny day
# Today is Tuesday and it is a cloudy day.
# Tuesday is a cloudy day
# Today is Wednesday and it is a rainy day.
# Wednesday is a rainy day
# Today is Thursday and it is a stormy day.
# Thursday is a stormy day
# Today is Friday and it is a sunny day.
# Friday is a sunny day
# Today is Saturday and it is a cloudy day.
# Saturday is a cloudy day
# Today is Sunday and it is a rainy day.
# Sunday is a rainy day

这会循环遍历向量的所有元素,并根据索引访问每一天和天气。

Day: "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday"
Index:  1         2          3           4         5         6        7

在循环的第一次迭代中,i设置为1day[i]"Monday"。同样,weather[i]"sunny",因为"sunny"weather向量中的第一个元素。在整个载体上重复该模式。

所以在第一次迭代中,第一个句子是

cat("Today is", "Monday", "and it is a", "sunny", "day.\n")

默认情况下,cat用空格分隔连续值。所以这打印出我们正在寻找的句子。第二句也是如此。