【问题标题】:Using R to repeatedly replace words使用 R 重复替换单词
【发布时间】:2015-08-19 16:40:19
【问题描述】:

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

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 初学者,所以任何解释都将不胜感激!

【问题讨论】:

    标签: r loops replace


    【解决方案1】:
    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" 将结果向量放入单个换行符分隔的结果中......或者只使用 writeLines() 将结果向量发送到文本文件。

    【讨论】:

      【解决方案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 用空格分隔连续值。所以这会打印出我们正在寻找的句子。第二句也是如此。

      【讨论】:

        猜你喜欢
        • 2020-02-17
        • 2019-03-07
        • 1970-01-01
        • 2017-09-29
        • 1970-01-01
        • 1970-01-01
        • 2017-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多